class Solution {
public List<List<Integer>> threeSum(int[] nums) {
List<List<Integer>> list=new ArrayList<>();
int n=nums.length;
int j,k,sum;
Arrays.sort(nums);
for(int i=0;i<n-2;i++){
while(i>0&&i<n-1&&nums[i]==nums[i-1]) i++;
if(nums[i]>0) break;
j=i+1;k=n-1;
while(j<k){
if(nums[i]+nums[j]+nums[k]==0){
ArrayList<Integer> li=new ArrayList<>();
li.add(nums[i]);
li.add(nums[j]);
li.add(nums[k]);
list.add(li);
while(j>0&&j<n-1&&nums[j]==nums[j+1]) j++;
j++;
while(k>0&&nums[k]==nums[k-1]) k--;
k--;
}else if(nums[i]+nums[j]+nums[k]<0){
j++;
}else if(nums[i]+nums[j]+nums[k]>0){
k--;
}
}
}
return list;
}
}
用左右指针解决三数之和
最新推荐文章于 2023-12-25 17:58:10 发布