leetcode-18. The sum of four numbers

Subject: https://leetcode-cn.com/problems/4sum/

Answer: Double pointer:

public List<List<Integer>> fourSum(int[] nums, int target) {

        Arrays.sort(nums);

        int n = nums.length;

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

        for(int i=0;i<n-3;i++){

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

                continue;

            }

            for(int j=i+1;j<n-2;j++){

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

                    continue;

                }

                for(int m=j+1;m<n-1;m++){

                    if(m>j+1 && nums[m] == nums[m-1]){

                        continue;

                    }

                    int right = n-1;

                    int value = target-nums[i]-nums[j]-nums[m];

                    while (m<right && nums[right]>value){

                        right--;

                    }

                    if(m==right) break;

                    if(nums[right] == value){

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

                        list.add(nums[i]);

                        list.add(nums[j]);

                        list.add(nums[m]);

                        list.add(nums[right]);

                        result.add(list);

                    }

                }

            }

        }

        return result;

    }

Guess you like

Origin blog.csdn.net/wuqiqi1992/article/details/108573198