#include <vector>
class Solution {
public:
vector<vector<int>>ans;
vector<int> t;
set<vector<int>> s;
vector<vector<int> > threeSum(vector<int> &num) {
if(num.size()<3) return ans;
sort(num.begin(),num.end());
for(int i=0;i<num.size()-2;i++){
int j=i+1,k=num.size()-1;
while(j<k){
int sum=num[i]+num[j]+num[k];
if(sum==0){
t.push_back(num[i]);
t.push_back(num[j]);
t.push_back(num[k]);
sort(t.begin(),t.end());
if(s.count(t)==0){
ans.push_back(t);
s.insert(t);
}
t.clear();
if(num[k]==num[k-1]){
k--;
}
else if(num[j]==num[j+1]){
j++;
}
else {
j++;
k--;
}
}
else if(sum<0){
j++;
}
else k--;
}
}
return ans;
}
};



京公网安备 11010502036488号