class Solution {
public:
vector<vector<int> > threeSum(vector<int> &num) {
vector<vector<int>> ans;
int n = num.size();
if(n < 3)
return ans;
sort(num.begin(),num.end());
for(int i = 0; i < n ; i++){
// ^_^
if( i > 0 && num[i] == num[i-1])
continue;
int k = n - 1;
int target = -num[i];
for(int j = i + 1 ; j < n ; j++){
// ^_^
if(j > i + 1 && num[j] == num[j-1])
continue;
while(j < k){
if(num[j] + num[k] > target)
k--;
else if(num[j] + num[k] < target)
j++;
else{
ans.push_back({num[i],num[j],num[k]});
// ^_^
break;
}
}
}
}
return ans;
}
};