c_cpp 15. 3Sum
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 15. 3Sum相关的知识,希望对你有一定的参考价值。
class Solution {
private:
vector<vector<int>> res;
void findTwoSum(const vector<int> & nums, const int currentI) {
int target = nums[currentI];
int head = currentI + 1, tail = nums.size() - 1;
while (head < tail) {
int expect = 0 - target - nums[head] - nums[tail];
if (expect > 0) {
head++;
} else if (expect < 0) {
tail--;
} else {
res.push_back({target, nums[head], nums[tail]});
while (head+1 < tail && nums[head] == nums[head+1]) head++;
head++;
tail--;
}
}
}
public:
vector<vector<int>> threeSum(vector<int>& nums) {
if (nums.size() < 3) return {};
sort(nums.begin(), nums.end());
for (int i=0; i<nums.size() - 2; i++) {
findTwoSum(nums, i);
while (i+1 < nums.size() && nums[i] == nums[i+1]) i++;
}
return res;
}
};
以上是关于c_cpp 15. 3Sum的主要内容,如果未能解决你的问题,请参考以下文章
c_cpp 16. 3Sum Closest- Med - 2018.11.2
c_cpp [阵] 3sum最近。给定n个整数的数组S,在S中找到三个整数,使得总和最接近给定数字target。 Retur
15 & 16. 3Sum & 3Sum Cloest
15. 3Sum
15. 3Sum
15. 3Sum