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