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