Leetcode #18 4Sum


    public List> fourSum(int[] nums, int target) {
        Arrays.sort(nums);
        //System.out.println(Arrays.toString(nums));
        int len = nums.length;
        List> result = new LinkedList<>();
        for(int i=0;i

类似这种k-sum的题,都简化为sorted array的2sum问题,即利用two pointers, 一个头,一个尾,互相逼近看是否达到target值。
3-sum问题即,先选定一个,再在剩余数组中做2-sum,4-sum同上。注意代码中注释的如何去除重复值。
类似题目
2-sum:

public int[] twoSum(int[] nums, int target) {
       Map map = new HashMap<>();
       int[] res = new int[2];
       for(int i=0,len=nums.length;i

3-sum:

public List> threeSum(int[] nums) {
        List> result = new LinkedList<>();
        Arrays.sort(nums);
        for(int i=0,len=nums.length;i0){
                        high--;
                    }
                    else low++;
                }
            }
        }
        
        return result;
    }

3-sum closer:

Arrays.sort(nums);
        int cur = 0,dis=Integer.MAX_VALUE;
        for(int i=0,len=nums.length;itarget){
                        high--;
                    }
                    else{
                        low++;
                    }
                    //System.out.println(d+" "+dis);
                    if(d

你可能感兴趣的:(Leetcode #18 4Sum)