我已经被困在这个问题很长一段时间了。设X,Y和Z为n个整数的集合。设k为任意整数。问题"你能找到X中的x,Y中的y和Z中的z,使得x + y + z = k"通过尝试所有组合,可以在O(n ^ 3)时间内明显地解决。给出一个在O(n ^ 2)中运行的算法。您可以假设sort是一种在O(n * log n)时间内运行的内置方法。这是一个旧测试的问题。任何帮助将不胜感激。感谢。
答案 0 :(得分:1)
任何帮助将不胜感激。
我的帮助是提示的形式。
提示:
1 - 如果x + y + z == k
,则z = k - x - y
...
2 - 如何在O(1)
中测试集合成员身份? (这忽略了问题中的暗示......)
OR
2a - O(N log N)
N
时M * M
是什么? (为什么我选择O(N log N)
??)
答案 1 :(得分:0)
对数组进行排序。
对于数组中的每个z,检查k-z是否是两个元素的总和,在O(n)时间内(经典的访谈问题和解决方案,你会发现很多页面包含它)。