LCR007.三数之和
链接:LCR007.三数之和
难度:Medium
标签:数组、双指针、排序
简介:给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a ,b ,c ,使得 a + b + c = 0 ?请找出所有和为 0 且 不重复 的三元组。
题解 1 - cpp
- 编辑时间:2022-02-18
- 执行用时:60ms
- 内存消耗:19.3MB
- 编程语言:cpp
- 解法介绍:循环双指针。
class Solution {
public:
vector<vector<int>> threeSum(vector<int>& nums) {
vector<vector<int>> ans;
sort(nums.begin(), nums.end());
for (int i = 0; i < nums.size() && nums[i] <= 0; i++) {
if (i != 0 && nums[i] == nums[i - 1]) continue;
int sum, l = i + 1, r = nums.size() - 1;
while (l < r) {
sum = nums[l] + nums[r] + nums[i];
if (sum == 0) {
ans.push_back(vector<int>{nums[i], nums[l], nums[r]});
while (l < r && nums[l] == nums[l + 1]) l++;
l++;
} else if (sum > 0)
r--;
else
l++;
}
}
return ans;
}
};