题目
题解
代码
class Solution {
public:
vector<vector<int>> threeSum(vector<int>& nums) {
vector<vector<int>> res;
if(nums.size()<3)
return res;
sort(nums.begin(),nums.end());
for(int i=0;i<nums.size();i++){
if(nums[i]>0)
break;
if(i>0&&nums[i]==nums[i-1])
continue;
int p=i+1;
int q=nums.size()-1;
while(p<q){
if(nums[i]+nums[p]+nums[q]==0){
res.push_back({nums[i],nums[p],nums[q]});
p++;
q--;
while(nums[p]==nums[p-1]&&nums[q]==nums[q+1]&&p<q){
p++;
q--;
}
}
else if(nums[i]+nums[p]+nums[q]>0){
q--;
}
else{
p++;
}
}
}
return res;
}
};