小编典典

在数组中找到两个元素,总和为k

algorithm

给定:未排序A的整数数组
输入:整数k

输出:所有两个元素集,每个元素集之和等于kO(n)。

例:

A = {3,4,5,1,4,2}

输入:6
输出:{3,3}, {5,1}, {4,2}

注意:我知道一个O(n logn)解决方案,但这需要对数组进行排序。有什么方法可以解决O(n)中的问题。可以使用非平凡的C ++数据结构,即空间不受限制


阅读 373

收藏
2020-07-28

共1个答案

小编典典

制作一个常数时间查找表(哈希),以便可以查看数组(O(n))中是否包含特定的整数。然后,对于数组中的每个元素,查看是否k-A[i]包含。每个元素花费的时间是恒定的,因此总共需要O(n)时间。假设元素是不同的。使它与重复元素一起工作并不难。

2020-07-28