题目
![在这里插入图片描述](https://img-blog.csdnimg.cn/21065d31825642988b636d013d9c5058.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1NhdWx0eQ==,size_16,color_FFFFFF,t_70)
题解
![在这里插入图片描述](https://img-blog.csdnimg.cn/5e4aa77ac63c42b1bdd5d21d24db7fd7.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1NhdWx0eQ==,size_16,color_FFFFFF,t_70)
代码
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;
}
};
![在这里插入图片描述](https://img-blog.csdnimg.cn/30e73a4c719d45de9c8fa05cd549d8c6.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1NhdWx0eQ==,size_16,color_FFFFFF,t_70)