三数之和

2019-01-30  本文已影响0人  花钱约下

给定一个包含 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;
    }
上一篇 下一篇

猜你喜欢

热点阅读