package com.david.leetcode;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class T18 {
class Solution {
public List<List<Integer>> fourSum(int[] nums, int target) {
int n = nums.length,sum = 0,l = 0,r = 0;
List<List<Integer>> res = new ArrayList<>();
if(n<3) return res;
Arrays.sort(nums);
for(int i=0;i<n;i++){
//保证定值nums[i]的重复
if(i>0&&nums[i]==nums[i-1]) continue;
for(int j =i+1;j<n;j++){
//保证定值nums[j]步重复
if(j>i+1&&nums[j]==nums[j-1]) continue;
l = j+1;
r = n-1;
while(l<r){
sum = nums[i]+nums[j]+nums[l]+nums[r];//最多只利用两个变量nums[r],nums[l]
if(sum==target){
res.add(Arrays.asList(nums[i],nums[j],nums[l],nums[r]));
while(l<r&&nums[l]==nums[l+1]){
l++;
}
while(r<l&&nums[r]==nums[r-1]){
r--;
}
l++;
r--;
}else if(sum>target){
r--;
}else{
l++;
}
}
}
}
return res;
}
}
}
leetcode T18
最新推荐文章于 2024-09-16 17:05:22 发布