版权声明:本文为博主编写文章,未经博主允许转载,转载请注明出处: https://blog.csdn.net/qq_39742013/article/details/83043779
class Solution {
public:
vector<vector<int>> threeSum(vector<int>& nums) {
vector<vector<int>> result;
sort(nums.begin(),nums.end());
if(nums.size()<=2)
return result;
for(int i=0;i<nums.size()-2;i++)
{
int a=nums[i];
if(i>0&&nums[i-1]==a)
continue;
if(a>0)
break;
for(int j=i+1,k=nums.size()-1;j<k;)
{
int b=nums[j];
int c=nums[k];
int sum=a+b+c;
if(sum==0)
{
vector<int> newVector=vector<int>();
newVector.push_back(a);
newVector.push_back(b);
newVector.push_back(c);
result.push_back(newVector);
while(j<k&&b==nums[++j]);
while(j<k&&c==nums[--k]);
}
else if(sum>0)
{
k--;
}
else if(sum<0)
{
j++;
}
}
}
return result;
}
};