15. 三数之和

2018-05-17  本文已影响0人  织毛衣的手

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);
上一篇 下一篇

猜你喜欢

热点阅读