1.关键在于去重
class Solution {
public:
vector<vector<int> > threeSum(vector<int> &num) {
vector<vector<int>> res = vector<vector<int>>();
if(num.size()<3) {
return res;
}
sort(num.begin(), num.end());
for(int i =0;i<num.size()-2;i++) {
if(i>0 && num[i]==num[i-1]) {
continue;
}
int j=i+1,k=num.size()-1;
while(j<k) {
if(num[i]+num[j]+num[k]==0) {
res.push_back(vector<int>{num[i],num[j],num[k]});
j++;
while(j<num.size() && num[j]==num[j-1]) j++;
continue;
}
if(num[i]+num[j]+num[k]>0) {
k--;
}else {
j++;
}
}
}
return res;
}
};