三数之和

给定一个包含 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;
    }
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容