15. 三数之和

This commit is contained in:
2025-08-14 23:37:03 +08:00
parent f8f0a3632b
commit 1651e74bfa

28
test006.cpp Normal file
View File

@@ -0,0 +1,28 @@
class Solution {
public:
vector<vector<int>> threeSum(vector<int>& nums) {
// Ö÷ÒªÎÊÌ⻹ÊÇÈ¥ÖØ¸´
int n = nums.size();
sort(nums.begin(), nums.end());
vector<vector<int>> ret;
int preid = -1;
for(int i = 0; i < n; i++){
if(preid != -1 && nums[i] == nums[preid]) continue;
int l = i + 1, r = n - 1;
while(l < r){
int sum = nums[i] + nums[l] + nums[r];
if(sum == 0){
ret.push_back({nums[l], nums[r], nums[i]});
int tmp = nums[l];
while(l < r && nums[l] == tmp) l++;
preid = i;
}else if(sum > 0){
r--;
}else{
l++;
}
}
}
return ret;
}
};