/*************************************************
题目:找出数组中3个数和为0的组合
For example, given array S = [-1, 0, 1, 2, -1, -4],
A solution set is:
[ [-1, 0, 1],
[-1, -1, 2] ]
*************************************************/
vector<vector<int> > threeSum(vector<int> &num) {
vector<vector<int> > res;
sort(num.begin(), num.end());
for (int i = 0; i < num.size(); i++)
{
int target = -num[i];
int front = i + 1;
int back = num.size() - 1;
while (front < back)
{
int sum = num[front] + num[back];
if (sum < target)
front++;
else if (sum > target)
back--;
else
{
vector<int> temp(3, 0);
temp[0] = num[i];
temp[1] = num[front];
temp[2] = num[back];
res.push_back(temp);
//处理与第二个数相同的数 ++操作
while (front < back && num[front] == temp[1]) front++;
//处理与第三个数相同的数 --操作
while (front < back && num[back] == temp[2]) back--;
}
}
//处理与第1个数相同的数 ++操作
while (i + 1 < num.size() && num[i + 1] == num[i])
i++;
}
return res;
}
[LeetCode]15.threeSum
最新推荐文章于 2025-03-18 18:39:07 发布