题目:x,y,z是一个整数数组的三个不同的元素,找到所有x = y +z的组合,在实现题目要求的基础上尽可能使用更优的算法.
我的实现代码:
$arr = [1, 2, 5, 6, 7];
foreach ($arr as $value) {
foreach ($arr as $val) {
if ($val == $value) {
continue;
}
$sum = $value + $val;
if ($sum != $value && $sum != $val && in_array($sum, $arr)) {
echo "$sum = $value + $val <br>";
}
}
}
还有更优的实现方式吗?
稍优化了一点,按你的算法,有n个元素的数组,要循环
回复里说的好,我没有考虑负数的情况,如果要考虑负数,哪把最大数pop出来,就不行了,只能重新维护一条新数组,用来枚举所有值,修改如下