参考 http://www.cnblogs.com/crystal-miao/p/3877546.html
代码
class Solution {
public:
vector<vector<int> > threeSum(vector<int> &num) {
vector<vector<int> > res;
vector<int> temp;
int size = num.size();
if(size<3)
return res;
sort(num.begin(), num.end());
for(int i = 0; i < size; ++i)
{
if(i>0&&num[i-1]==num[i])
continue;
for(int j = i+1, k = size-1; j<k;)
{
if(j>i+1&&num[j-1]==num[j])
{
++j;
continue;
}
if(k<size-1&&num[k]==num[k+1])
{
--k;
continue;
}
int sum = num[i] + num[j] + num[k];
if(sum>0)
--k;
else if(sum<0)
++j;
else
{
temp.push_back(num[i]);
temp.push_back(num[j]);
temp.push_back(num[k]);
res.push_back(temp);
temp.clear();
++j;
}
}
}
return res;
}
};