本文最精华的就是下面的视频讲解!
:参考的视频讲解
class Solution {
public List<List<Integer>> threeSum(int[] nums) {
List<List<Integer>> ans = new ArrayList<>();
Arrays.sort(nums);
int n=nums.length;
int i=0,j=0,k=0,sum=0;
for(;i<n-2;++i){
if(i>0&&nums[i]==nums[i-1]){
continue;
}
if(nums[i]+nums[i+1]+nums[i+2]>0){
break;
}
if(nums[i]+nums[n-2]+nums[n-1]<0){
continue;
}
j=i+1;
k=n-1;
for(;j<k;){
sum=nums[i]+nums[j]+nums[k];
if(sum<0){
j++;
}else if(sum>0){
k--;
}else{
List<Integer> tmp=new ArrayList<Integer>();
tmp.add(nums[i]);
tmp.add(nums[j]);
tmp.add(nums[k]);
ans.add(tmp);
j++;
while(j<k&&nums[j]==nums[j-1]){
++j;
}
k--;
while(k>j&&nums[k]==nums[k+1]){
k--;
}
}
}
}
return ans;
}
}