arrays - 判断数组中是否存在两个元素之和正好为X?

标签 arrays algorithm sorting hash hashtable

给定一个包含 N 个元素的数组 A[] 和一个数字 x,检查 A[] 中的对与总和为 x 吗?

方法 1 = 给出 O(n lg n) 的排序。

方法 2 = 使用给出 O(n) 的哈希表。

我对方法 2 有疑问,如果使用链接,那么对于每个元素,我们必须在列表中搜索其补码,由于链接,在最坏的情况下可能会产生 O(n^2)。

我认为它只有在给定整数范围时才会起作用,这样我们就可以拥有哈希表而无需链式给出 O(n)。我说得对吗?

最佳答案

你可以试试下面的方法->

hash all elements in A[], like (key, value) = (A[i],true) 

for all elements in A[]:
    if hash(x-A[i])=true: it exists

关于arrays - 判断数组中是否存在两个元素之和正好为X?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39242829/

相关文章:

c - &multi[3][0] 和 *(multi + 3) 怎么是同一件事?

c++ - 如何为表格或二维数组或多维数组的所有元素设置或初始化默认值

python - 在 Python 中定义旅行商的线性规划模型

为设置的表格宽度计算可变列宽的算法

r - R语言排序与分组

python 循环比 numpy 数组操作更快

java - 多维数组java的行和列

python - 如何约束具有多个随机选择位置的项目,使每个项目的平均位置在一定范围内

c - 如何找到数组中最短运行的最后一个索引?

swift - 根据优先级在 Tableview 中自动排列行 - Swift 3/4