#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;
}
};