【发布时间】:2012-03-12 08:49:02
【问题描述】:
考虑一个未排序的数字数组和一个常数 Z。我们想找出数组中是否有两个元素的和为 Z。
我知道there is an O(n*lgn) algorithm to do so。但是有没有在 O(n) 平均情况下运行的算法?
【问题讨论】:
-
这个问题已经回答过无数次了。在发布之前进行一些搜索(或只是搜索)。见:stackoverflow.com/questions/2171969/…
-
这看起来像作业,昨天问了同样的问题stackoverflow.com/questions/9373450/…
-
@ElKamina 这个问题是关于 O(nlog(n)) 算法的,所有提出的解决方案平均在 Θ(nlog(n)) 中运行.您提出的重复内容以及我在粗略搜索中找到的其他问题都没有讨论 O(n) 算法的可能性。
-
@Gilles 实际上提供了几种 0(n) 解决方案。包括stackoverflow.com/a/2172045/14167。
-
@DavidNehme 我没有看到。您引用的不是O(n)。它执行 Θ(n) 哈希表查找,并且哈希表查找最多为 O(lg(n))。答案下方的 cmets 对此进行了充分解释。