0
点赞
收藏
分享

微信扫一扫

LeetCode刷题三数之和,三数之最接近数,四数之和

爪哇驿站 2022-05-04 阅读 66

题目链接;

1.力扣

2.力扣​​​​​​

3.力扣

思路:将数组排序,然后是循环+双指针

这里展示四数之和的代码。

class Solution {
public List<List<Integer>> fourSum(int[] nums, int target) {
List<List<Integer>> ans= new ArrayList<List<Integer>>();
int len = nums.length;
Arrays.sort(nums);
for(int first=0;first<len-3;++first){
if(first>0&&nums[first]==nums[first-1]){
continue;
}
for(int second=first+1;second<len-2;++second){
if(second>first+1&&nums[second]==nums[second-1]){
continue;
}
int left=second+1;
int right=len-1;
while(left<right){
if(left>second+1&&nums[left]==nums[left-1]){
left++;
continue;
}
if(right<len-1&&nums[right]==nums[right+1]){
right--;
continue;
}
int sum=nums[first]+nums[second]+nums[left]+nums[right];
if(sum==target){
List<Integer> a= new ArrayList<Integer>();
a.add(nums[first]);
a.add(nums[second]);
a.add(nums[left]);
a.add(nums[right]);
ans.add(a);

}
if(sum>target){
right--;
}else{
left++;
}

}
}
}
return ans;

}
}

这个性能有点差,看了评论区,大佬太多了。

 

举报

相关推荐

0 条评论