class Solution { public: vector<vector<int> > threeSum(vector<int> &num) { vector<vector<int>>result; vector<int>vec; int len = num.size(); //assert(len<3); sort(num.begin(),num.end()); int j,k; for(int i=0;i<len-2;i++) { if(i!=0&&num[i]==num[i-1])continue; j=i+1; k=len-1; while(j<k) { if(j>i+1&&num[j]==num[j-1]){j++;continue;} if(k<len-1&&num[k]==num[k+1]){k--;continue;} if(num[i]+num[j]+num[k]>0) { k--; continue; } if(num[i]+num[j]+num[k]<0) { j++; continue; } vec.push_back(num[i]); vec.push_back(num[j]); vec.push_back(num[k]); result.push_back(vec); vec.clear(); j++; continue; } } return result; } };