Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何在庞大的数字列表中找到xi=xj的两个数字?_Arrays_Algorithm_Hash - Fatal编程技术网

Arrays 如何在庞大的数字列表中找到xi=xj的两个数字?

Arrays 如何在庞大的数字列表中找到xi=xj的两个数字?,arrays,algorithm,hash,Arrays,Algorithm,Hash,我有一个问题,它向我尖叫着要一个哈希解决方案: 问题: 给定一个庞大的数字列表,x1…….xn其中xi相同的方法可以快约两倍(平均),仍然O(n)平均-但具有更好的常数 无需将所有元素映射到哈希中,然后再进行检查-更快的解决方案可能是: for each element e: if e is in the table: return e else: insert e into the table 还要注意,如果T

我有一个问题,它向我尖叫着要一个哈希解决方案:

问题:


给定一个庞大的数字列表,
x1…….xn
其中
xi相同的方法可以快约两倍(平均),仍然
O(n)
平均-但具有更好的常数

无需将所有元素映射到哈希中,然后再进行检查-更快的解决方案可能是:

for each element e:
  if e is in the table:
      return e
  else:
    insert e into the table
还要注意,如果
T
,则必须在第一个
T+1
元素中有一个dupe,从。

同样对于较小的
T
,您可以使用大小为T的简单数组,不需要散列
(散列(x)=x)
。包含零作为初始值。

散列也需要
O(n)
空间。允许这样做吗?(考虑到这是一个庞大的数字列表)@Goo:没有关于空间的说明,那么我想这是不言而喻的。Txi