class Solution {
public:
vector<vector<int>> threeSum(vector<int>& nums) {
sort(nums.begin(),nums.end());
int n,i,j,sum;
n=0;
vector<vector<int>> ans;
if(nums.size()<3){
return ans;
}
while(n<nums.size()-2){
if(nums[n]>0){
break;
}
i=n+1;
j=nums.size()-1;
while(i<j){
sum=nums[n]+nums[i]+nums[j];
if(sum==0){
ans.push_back({nums[n],nums[i],nums[j]});
i++;
while(nums[i-1]==nums[i]&&i<j){
i++;
}
j--;
while(nums[j+1]==nums[j]&&i<j){
j--;
}
}
else{
sum>0?j--:i++;
}
}
n++;
while(nums[n-1]==nums[n]&&n<nums.size()-2){
n++;
}
}
return ans;
}
};
本来想用哈希做的结果发现实现起来太麻烦了
网友评论