class Solution {
public List<List<Integer>> threeSum(int[] nums) {
List<List<Integer>> list=new ArrayList<List<Integer>>();
if(nums.length<3) return list;
Arrays.sort(nums);
int lastIndex=nums.length-3;
for(int i=0;i<=lastIndex;i++) {
if(i>0 && nums[i]==nums[i-1]) continue;
int l=i+1;
int r=nums.length-1;
int remainSum=-nums[i];
while(l<r) {
if((nums[l]+nums[r])==remainSum) {
list.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((nums[l]+nums[r])<remainSum) {
l++;
}else {
r--;
}
}
}
return list;
}
}
leetcode_15_三数之和@@数组(双指针)
猜你喜欢
转载自blog.csdn.net/ruochen82155551/article/details/107643306
今日推荐
周排行