给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。
注意:答案中不可以包含重复的三元组。
$nums = [-1, 0, 1, 2, -1, -4, 4, -2];
function threeSum($nums)
{
$data = [];
$len = count($nums);
sort($nums);
foreach ($nums as $index => $num) {
$a = $num;
$j = $index + 1;
$k = $len - 1;
while ($j < $k) {
$sum = $a + $nums[$j] + $nums[$k];
if ($sum < 0) {
$j++;
} else if ($sum > 0) {
$k--;
} else {
$tmp_arr = [$a, $nums[$j], $nums[$k]];
sort($tmp_arr);
$_k = implode('', $tmp_arr);
$data[$_k] = $tmp_arr;
$j++;
$k--;
}
}
}
!empty($data) && $data = array_values($data);
return $data;
}
网友评论