【发布时间】:2011-08-03 13:47:39
【问题描述】:
给定:一个未排序的整数数组A
输入:整数k
输出:所有两个元素集合,每个集合中的元素总和等于k in O(n)。
例子:
A = {3,4,5,1,4,2}
输入:6
输出:{3,3}, {5,1}, {4,2}
注意:我知道一个 O(n logn) 解决方案,但这需要对数组进行排序。有什么方法可以在 O(n) 中解决这个问题。可以使用非平凡的 C++ 数据结构,即没有空间限制
【问题讨论】:
-
你是如何得到输出对
{3,3}的?输入数组中只有一个 3。 -
是否允许否定元素?
-
您的数组 A 中只有一个值 3。{3,3} 仍然是解决方案集的一部分吗?
-
不允许使用负数@Ben Voigt。