数组中 4 个数字的总和等于一个特定数字

Sum of 4 numbers in an array equal to a specific number

本文关键字:数字 于一个 数组      更新时间:2023-10-16

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

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

数组包含

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

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

8 或 1,3,7,-11

可以重复相同的值。根本无所谓。唯一要记住的是选择的四个数字应具有不同的索引。就这样。

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

谢谢。

好吧,从 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。