所以我试图解决的问题如下:
输入是一个由 n 个数字组成的序列 {x1, x2, . . . , xn},另一个 n 数序列 {y1, y2, . . . , yn} 和一个数字 z。您的算法应确定 z ∈ {xi + yj | 1≤i,j≤n}。您应该使用通用散列系列,并且您的算法应该在预期时间 O(n) 内运行。
提供理由证明您的算法是正确的并在要求的时间内运行。非常清楚您正在使用的课程和/或文本中的哪些定理,以及如何使用。
到目前为止,我已经提出了这个算法来查找所有可能的总和,将它们插入到哈希表中,然后搜索z
:
for (i in x; i++) {
for (j in y; j++) {
sum = xi + yj;
insert_into_hash_table(T, sum);
}
}
search_hash_table(T, z);
唯一的问题是这里最坏情况的时间是O(n^2)
。
我该怎么做O(n)
?=S