数组中 4 个数字的总和等于一个特定数字
Sum of 4 numbers in an array equal to a specific number
可能的重复项:
在数组中查找四个元素,其总和等于给定数字 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。
相关文章:
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 我必须更改我的数字最后一个数字和第一个数字,但不要使用仅带有整数或循环的函数.例如从 12345 到 52341
- 将一个数字拆分为多个数字,每个数字只有一个有效位
- 我的代码仅适用于一个输入.请指教
- 如何将字符串和数字放在一个多维数组中?
- 如何为字符串编写正则表达式,其中包含一个数字至少一个数字,并且不包含任何字母
- 从一串数字C++创建一个数字序列
- 我怎样才能将像 123 这样的数字变成一个带有 ascii 的字符串C++
- 将一个数字的一个数字与其当前位置相乘,然后使用递归将其和其他数字相加
- 外部声明变量的定义适用于一个函数,但不适用于另一个函数
- 为什么这段代码会给我的数字加一个额外的零
- 在一行代码中输入2个十六进制数字和一个字符串
- 将多个(300)方法应用于一个数据的巧妙方法
- 确定谓词是否适用于一个范围的全部、部分或全部元素
- 依赖于一个空std::string的索引0是不是不好?
- 从输入中获取一个数字和一个单位作为双精度和字符串——编程:使用c++的原则和实践
- 如何添加一个数字到一个字符串
- 如何使图片适合于一个静态控件vc++ win32
- 如何用一个数字乘以一个通过引用传递的函数
- C++ 矢量复制适用于一个向量,但不适用于另一个向量