class Solution {
public List<List<Integer>> fourSum(int[] nums, int target) {
Arrays.sort(nums);
List<List<Integer>> res = new ArrayList<>();
for(int i=0;i<=nums.length-1;i++){
//这种剪枝是错误的,这道题目target 是任意值
// if(nums[i]>target) break;
if(i>0 && nums[i]==nums[i-1]) continue;
for(int j = i+1;j<=nums.length-1;j++){
if(j > i+1 && nums[j]==nums[j-1]) continue;
int left = j+1;
int right = nums.length-1;
while(left<right){
int sum = nums[i]+nums[j]+nums[left]+nums[right];
if(sum<target){
left++;
}else if(sum>target){
right--;
}else{
List<Integer> list = new ArrayList<>();
list.add(nums[left]);
list.add(nums[right]);
list.add(nums[j]);
list.add(nums[i]);
res.add(list);
while(left<right && nums[left]==nums[left+1]) left++;
while(left<right && nums[right]==nums[right-1]) right--;
left++;
right--;
}
}
}
}
return res;
}
}
18. 四数之和
最新推荐文章于 2024-08-14 20:13:10 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)