Leetcode 18. 4Sum

复杂度是o3 先排序,关键还是要处理连续重复数据,i和j都要取一串连续数字中最左面的那一个

public class Solution {
    public List> fourSum(int[] nums, int target) {
        List> results = new ArrayList>();
        if (nums.length < 4) {
            return results;
        }
        
        List numList = new ArrayList();
        for (int num: nums) {
            numList.add(num);
        }
        Collections.sort(numList);
        for (int i = 0; i < numList.size(); i++) {
            nums[i] = numList.get(i);
        }
        
        for (int i = 0; i < nums.length - 3; i++) {
            while(itarget-nums[i]-nums[j]) {
                        q--;
                    } else {
                        List result = Arrays.asList(new Integer[]{nums[i],nums[j],nums[p],nums[q]});
                        results.add(result);
                        int nums_p = nums[p];
                        int nums_q = nums[q];
                        p++;
                        q--;
                        while(p

你可能感兴趣的:(leetcode)