代码随想录第七天 2023.7.18
题目链接:
15. 三数之和 - 力扣(LeetCode)https://leetcode.cn/problems/3sum/
代码如下:
class Solution {
public:
vector<vector<int>> threeSum(vector<int>& nums) {
vector<vector<int>> result;
sort(nums.begin(),nums.end());
int i;
for(i=0;i<nums.size();i++){
if(nums[i]>0){
return result;
}
if(i>0&&nums[i]==nums[i-1]){
continue; //指针i的去重
}
int left=i+1;
int right=nums.size()-1;
while(left<right){
if(nums[i]+nums[left]+nums[right]>0){
right--;
}
else if(nums[i]+nums[left]+nums[right]<0){
left++;
}
else{
result.push_back(vector<int>{nums[i],nums[left],nums[right]});
while(right > left && nums[left]==nums[left+1]){
left++; //指针left的去重
}
while(right > left && nums[right]==nums[right-1]){
right--; //指针right的去重
}
right--;
left++;
}
}
}
return result;
}
};