LeetCode 的算法题 PHP解法记录
给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。
注意:答案中不可以包含重复的三元组。
例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],
满足要求的三元组集合为:
[
[-1, 0, 1],
[-1, -1, 2]
]
解:
$a=array(
-1, 0, 1, 2, -1, -4
);
function threeCount($arr){
// 遍历全部的三个数组合
$res=array();
for($n=0;$n<count($arr)-2;$n++){
for($i=$n+1;$i<count($arr)-1;$i++){
for ($j = $i+1; $j < count($arr) ; $j++) {
$res[]=array($arr[$n],$arr[$i],$arr[$j]);
}
}
}
// 取结果0 ,去重
$data=array();
$check=array();
foreach ($res as $key => $value) {
if(array_sum($value) == 0){
$ch=$value;
sort($ch);
$str=implode($ch);
if(in_array($str,$check)){
continue;
}else{
$check[] =$ch;
}
$data[] = $value;
}
}
var_dump($data);
var_dump($check);
}
threeCount($a);