三数之和 2025-02-28 Leetcode 1 min 149 字 固定左边界,两个指针在右半区间夹逼 1234567891011121314151617181920212223242526272829303132333435363738394041#include<vector>#include<algorithm>using namespace std;class Solution{ public: vector<vector<int>> threeSum(vector<int>& nums){ vector<vector<int>> ans; sort(nums.begin(), nums.end()); if(nums.size() < 3) return ans; for(int i =0; i < nums.size() - 2; i++){ if(i>0&&nums[i] == nums[i-1]) continue;//去掉重复的i,由于i已经变动过,所以要和上一个进行比较 int left = i + 1; int right = nums.size() -1 ; while( left < right){ int sum = nums[i] + nums[left] + nums[right]; if(sum == 0){ ans.push_back({nums[i],nums[left],nums[right]}); left++; right--; while(left < right && nums[left] == nums[left-1]) left++; //新的left和right和之前的left和right相同,继续移动 while(left < right && nums[right] == nums[right +1 ]) right-- ; } else if(sum < 0){ left++; } else{ right--; } } } return ans; }}; #算法#Leetcode copyright copyright_text 本文链接:https://afogsheep-github-io.pages.dev2025/02/28/Leetcode_三数之和/ prev一周刷题 next 两数之和