1

可能重复:
在数组中找到总和等于给定数字 X 的四个元素

给定一个正整数和负整数的整数数组,找到四个不同的数字,它们总和为特定数字,比如 0。O(n^4)显然不是一个好的解决方案。例如

一个数组包含

0,1,-4,3,7,-8, -11

在这里,可能的解决方案是 0,1,-4,3 或 0,1,7,-8 或 1,3,7,-11

相同的值可以重复。完全没有关系。唯一要记住的是,选择的四个数字应该有不同的索引。就是这样。

我找到了一些有关有效解决方案的材料,但对我来说并不满意。如果有人可以帮助我,非常欢迎您。

谢谢。

4

1 回答 1

2

好吧,从http://en.wikipedia.org/wiki/3SUM开始,这是关于找到 3 个加起来为 0 的数字,我认为(类似于相关的(?)背包问题)没有真正好的方法做4个数字。

现在,我假设 3SUM 算法可以适用于解决找到 3 个加起来为 c 而不是 0 的数字的问题——给出的算法与 ==0 和 <0 进行比较,所以也许可以将其更改为另一个常数。如果这不起作用,您始终可以将每个整数乘以 3,然后在执行 3SUM 之前从每个整数中减去常数(实际上我想从每个整数中减去 c/3,因为我们要添加其中的 3 个,但算法说整数数字...)。

第 4 个数字可能会引入另一个因素“n”:遍历所有数字并将第 4 个数字合并到常数中。因此,对于 3SUM,我们将保持在 n^2,对于 4SUM,我们将保持在 n^3。

于 2012-07-05T16:47:29.417 回答