代码随想录 Leetcode15. 三数之和

发布时间:2024年01月15日

题目:


代码(首刷看解析 2024年1月15日):

class Solution {
public:
    vector<vector<int>> threeSum(vector<int>& nums) {
        vector<vector<int>> res;
        int n = nums.size();
        sort(nums.begin(),nums.end());
        for(int i = 0; i < n; ++i) {
            if(nums[i] > 0) break;
            if(i > 0 && nums[i] == nums[i-1]) continue;
            int left = i + 1,right = n - 1;
            while(left < right) {
                int sum = nums[i] + nums[left] +nums[right];
                if(sum < 0){
                    do{++left;} while(nums[left] == nums[left-1] && left < right);
                }else if(sum > 0){
                    do{--right;} while(nums[right] == nums[right+1] && left < right);
                }else{
                    res.push_back({nums[i],nums[left],nums[right]});
                    do{++left;} while(nums[left] == nums[left-1] && left < right);
                    do{--right;} while(nums[right] == nums[right+1] && left < right);
                }
            }
        }
        return res;
    }
};

? ? ? ? 给Krahet大佬跪了,写出来总是考虑不到细节有BUG。

文章来源:https://blog.csdn.net/qq_52313711/article/details/135601089
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。