LeetCode18:四数之和

    技术2022-07-16  80

    class Solution { public List<List<Integer>> fourSum(int[] nums, int target) { Arrays.sort(nums); List<List<Integer>> ans = new ArrayList<>(); int n = nums.length; if(n<4){ return ans; } int l,m; for(int i = 0;i<=n-4;i++){ if(i > 0 && nums[i]==nums[i-1]){ continue; } for(m=i+1;m<=n-3;m++){ if(m>i+1 && nums[m]==nums[m-1]){ continue; } l=m+1; int r = n - 1; while(l<r){ int sum = nums[i]+nums[l]+nums[m]+nums[r]; if(sum==target){ ans.add(Arrays.asList(nums[i],nums[l],nums[m],nums[r])); while(l<r && nums[l]==nums[l+1]) l++; while(l<r && nums[r]==nums[r-1]) r--; l++; r--; } else if (sum<target){ l++; } else if(sum>target){ r--; } } } } return ans; } }

     

    Processed: 0.018, SQL: 9