您的位置:首页 > 其它

[LeetCode] 15. 3Sum

2017-06-23 17:06 393 查看
Given an array S of n integers,
are there elements a, b, c in S such
that a + b + c =
0? Find all unique triplets in the array which gives the sum of zero.

Note: The solution set must not contain duplicate triplets.

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>& nums) {
vector<vector<int>> res;
sort(nums.begin(), nums.end());

for (int k = 0; k < nums.size(); k++) {
int rest = -nums[k];
for (int i = k + 1, j = nums.size() - 1; i < j; ) {
int sum = nums[i] + nums[j];
if (sum == rest) {
res.push_back({nums[k], nums[i], nums[j]});
for (int dup = nums[i]; i < j && nums[i] == dup; i++);
for (int dup = nums[j]; i < j && nums[j] == dup; j--);
} else if (sum < rest)
i++;
else
j--;
}
for (int dup = nums[k]; k + 1 < nums.size() && nums[k + 1] == dup; k++);
}

return res;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: