vector<vector<int> > threeSum(vector<int> &num)
{
sort(num.begin(), num.end());
vector<vector<int>> triplets;
int n = num.size();
if (n == 0)
{
return triplets;
}
int lastNum = num[0] + 1;
for (int aIndex = 0; aIndex < n-2; aIndex++)
{
if (num[aIndex] == lastNum)
{
continue;
}
else
{
lastNum = num[aIndex];
}
int bIndex = aIndex + 1, cIndex = n-1;
while (bIndex < cIndex)
{
if ( (num[aIndex]+num[bIndex]+num[cIndex]) < 0 )
{
bIndex++;
}
else if ( (num[aIndex]+num[bIndex]+num[cIndex]) > 0 )
{
cIndex--;
}
else
{
if (triplets.empty() || (num[bIndex] != triplets.back()[1] || num[cIndex] != triplets.back()[2]))
{
vector<int> triplet;
triplet.push_back(num[aIndex]);
triplet.push_back(num[bIndex]);
triplet.push_back(num[cIndex]);
triplets.push_back(triplet);
}
bIndex++;
cIndex--;
}
}
}
return triplets;
}
[LeetCode] 3Sum
最新推荐文章于 2022-01-27 22:44:32 发布