题解 | #牛牛的三元组问题#
牛牛的三元组问题
https://www.nowcoder.com/practice/72c6d735fb1144a2ba162976a4510839
class Solution { public: //三数之和 vector<vector<int> > findTriplets(vector<int>& nums) { vector<vector<int>> ans; sort(nums.begin(),nums.end()); for(int i = 0; i < nums.size();i++){ //剪枝 if(nums[i] > 0)break; if(i > 0 && nums[i] == nums[i-1]) continue; //a去重 int left = i+1, right = nums.size()-1; while(left < right){ //缩小区间 auto t = nums[i]+nums[left]+nums[right]; if(t > 0){ right--; }else if(t < 0) left++; else { ans.push_back({nums[i],nums[left],nums[right]}); //下面进行b,c去重 while(left < right && nums[left] == nums[left+1]) left++; while(left < right && nums[right] == nums[right-1]) right--; right--,left++; } } } return ans; } };