题解 | #牛牛的三元组问题#

牛牛的三元组问题

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;
    }
};

全部评论

相关推荐

06-20 17:42
东华大学 Java
凉风落木楚山秋:要是在2015,你这简历还可以月入十万,可惜现在是2025,已经跟不上版本了
我的简历长这样
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务