Steward
分享是一種喜悅、更是一種幸福
程式語言 - LeetCode - C++ - 15. 3Sum
參考資訊:
https://algo.monster/liteproblems/15
https://www.cnblogs.com/grandyang/p/4481576.html
題目:

解答:
class Solution {
public:
vector<vector<int>> threeSum(vector<int>& nums) {
vector<vector<int>> ret;
sort(nums.begin(), nums.end());
for (int i = 0; i < (int)nums.size() - 2; ++i) {
if (nums[i] > 0) {
break;
}
if ((i > 0) && (nums[i] == nums[i - 1])) {
continue;
}
int target = 0 - nums[i];
int l = i + 1;
int r = (int)nums.size() - 1;
while (l < r) {
if (nums[l] + nums[r] == target) {
ret.push_back({ nums[i], nums[l], nums[r] });
while ((l < r) && (nums[l] == nums[l + 1])) {
l += 1;
}
while ((l < r) && (nums[r] == nums[r - 1])) {
r -= 1;
}
l += 1;
r -= 1;
} else if (nums[l] + nums[r] < target) {
l += 1;
} else {
r -= 1;
}
}
}
return ret;
}
};