您现在的位置是:网站首页>>PHP>>php
PHP 实现查找数组中三个数相加为0的元素
发布时间:2019-03-14 13:30:23作者:wangjian浏览量:489点赞量:1
一:三次循环查找
代码如下:function Test($arr){
$result = [];
$count = count($arr);
for($i = 0;$i < $count-2;$i++){
for($j = $i+1;$j < $count - 1;$j++){
for($k = $j+1;$k < $count;$k++){
if($arr[$i]+ $arr[$j] + $arr[$k] == 0){
$result[] = [$arr[$i],$arr[$j],$arr[$k]];
}
}
}
}
return $result;
}
调用:$arr = [1,2,4,-3,0,-1,-2];
echo '
';
print_r(Test($arr));
输出结果为:
二:将数组先进行排序再查找
代码如下:function Test($arr){
sort($arr);//数组排序(升序排序)
$count = count($arr);
$result = [];
for($i = 0;$i
$j = $i + 1;
$k = $count - 1;
while ($k >$j) {
if($arr[$i]+$arr[$j]+$arr[$k]==0){
$result[] = [$arr[$i],$arr[$j],$arr[$k]];
$j++;
$k--;
}
else if($arr[$i]+$arr[$j]+$arr[$k]>0){
$k--;
//如果相加大于0时k--
}
else {
$j++;
//相加小于0时j++
}
}
}
return $result;
}
调用:$arr = [1,2,4,-3,0,-1,-2];
echo '
';
print_r(Test($arr));
输出为:
1
+1