可能重复:
find four elements in array whose sum equal to a given number X
给定一个整数数组,包括正整数和负整数,找到四个不同的数字,总结到具体数字为0. O(n^4)
显然不是一个好的解决方案。
E.g。
数组包含
0,1,-4,3,7,-8,-11
这里,可能的解决方案是0,1,-4,3或0,1,7,-8或1,3,7,-11
可以重复相同的值。这根本不重要。唯一要记住的是 选择的四个数字应该有不同的指数。这就是全部。
我找到了一些关于有效解决方案的材料,但对我并不满意。如果有人能帮助我,你会受到欢迎。
感谢。
答案 0 :(得分:2)
好吧,从http://en.wikipedia.org/wiki/3SUM开始,这是关于找到3个加起来为0的数字,我会假设(类似于相关的(?)背包问题)没有真正好的方法来做4个数字
现在,我假设3SUM算法可以用来解决找到3个加起来而不是0的数字的问题 - 给出的算法比较== 0和<0,所以也许可以改为另一个常数。如果这不起作用你可以总是将每个整数乘以3并在执行3SUM之前从每个整数中减去常量(实际上我想从每个整数中减去c / 3,因为我们正在添加其中的3个,但算法表示整数号...)。
第4个数字可能会引入另一个因子“n”:迭代所有数字并将第4个数字合并到常量中。因此,对于3SUM,我们将留下n ^ 2,为4SUM留下n ^ 3。