-
class Solution {
-
public:
-
vectorint> > threeSum(vector<int> &num) {
-
-
-
vectorint> > vec;
-
if (num.size() < 3)
-
return vec;
-
sort(num.begin(), num.end());
-
for (vector<int>::size_type i = 0; i < num.size() - 2; ++i)
-
{
-
if (num[i] > 0)
-
break;
-
int j = i + 1, k = num.size() - 1;
-
while (j < k)
-
{
-
if (num[i] + num[j] > 0)
-
break;
-
if (num[j] + num[k] < -num[i])
-
++j;
-
else if (num[j] + num[k] > -num[i])
-
--k;
-
else
-
{
-
vector<int> vec1;
-
vec1.push_back(num[i]);
-
vec1.push_back(num[j]);
-
vec1.push_back(num[k]);
-
vec.push_back(vec1);
-
-
while (j < k && num[j] == num[j + 1])
-
++j;
-
while (k > j && num[k] == num[k - 1])
-
--k;
-
++j;
-
--k;
-
}
-
}
-
-
while (i < num.size() - 2 && num[i + 1] == num[i])
-
++i;
-
}
-
return vec;
-
}
-
};
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29012686/viewspace-1153202/
,如需转载,请注明出处,否则将追究法律责任。