确定未排序数组中是否有2个元素在O(n)平均时间内总计为Z.

时间:2012-02-22 01:06:01

标签: arrays algorithm

  

可能重复:
  Determine whether or not there exist two elements in Set S whose sum is exactly x - correct solution?

考虑一个未排序的数字数组和一个常数Z.我们想要找出数组中有两个元素的和是Z.

我知道there is an O(n*lgn) algorithm to do so。但是,是否存在以O(n)平均情况运行的算法?

1 个答案:

答案 0 :(得分:0)

好吧,经过一番思考,我想出了以下方案:

  1. 制作一个大小为2n的哈希表
  2. 对于S中的每个值s,将s和Z-s都哈希到哈希表中
  3. 如果发生碰撞,则存在2个元素,其总和等于Z
  4. 该方案的运行时间为O(n)。