アルゴリズム:Leetcode.15。3つの数値の合計

件名:https : //leetcode-cn.com/problems/3sum/

回答:ダブルポインタ

 public List <List <Integer >> threeSum(int [] nums){

     Arrays.sort(nums);

        int len = nums.length;

        List <List <Integer >> result = new ArrayList <>();

        for(int i = 0; i <len; i ++){

            if(i> 0 && nums [i] == nums [i-1]){

                継続する;

            }

            if(nums [i]> 0)ブレーク;

            int right = len-1;

            int target = -nums [i];

            for(int left = i + 1; left <len; left ++){

                if(left> i + 1 && nums [left] == nums [left-1]){

                    継続する;

                }

                if(nums [i] + nums [left]> 0)ブレーク;

                while(left <right && nums [left] + nums [right]> target){

                    正しい - ;

                }

                if(left == right)break;

                if(nums [左] + nums [右] ==ターゲット){

                    List <Integer> list = new ArrayList <>();

                    list.add(nums [i]);

                    list.add(nums [left]);

                    list.add(nums [right]);

                    result.add(list);

                }

            }

        }

        結果を返す;

    }

おすすめ

転載: blog.csdn.net/wuqiqi1992/article/details/108548897