15. 【中等】三数之和
程序员文章站
2022-07-15 11:17:12
...
链接
题目描述
排序后双指针
思路
代码
class Solution {
public List<List<Integer>> threeSum(int[] nums) {
List<List<Integer>> res = new ArrayList<>();
if(nums == null || nums.length < 3){
return res;
}
Arrays.sort(nums);
for(int i = 0; i < nums.length-2;i++){
if(nums[i] > 0) break;
if( i > 0 && nums[i] == nums[i-1]) continue;
int l = i+1;
int r = nums.length-1;
while(l <r){
int sum = nums[i] + nums[l] + nums[r];
if(sum == 0){
res.add(Arrays.asList(nums[i],nums[l],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 > 0){
r--;
}else{
l++;
}
}
}
return res;
}
}
上一篇: Netcat(NC)正反弹shell
下一篇: 【leetcode】15.三数之和