LEETCODE 15. 三数之和

请添加图片描述

class Solution {
public:
    void paixu(int l,int r,vector<int>& nums){
        int mid=l+(r-l)/2;
        paixu(l,mid-1,nums);
        paixu(mid,r,nums);
        merge(l,r,nums);

    }
    void merge(int l,int r,vector<int>& nums){
        vector<int> tmp;
        int mid=l+(r-l)/2;
        int p=mid;
        int start=l;
        while(l<=mid && p<=r){
            if(nums[l]<nums[p]){
                tmp.push_back(nums[l]);
                l+=1;
            }
            else{
                tmp.push_back(nums[p]);
                p+=1;
            }
        }
        while(l<=mid)
            tmp.push_back(nums[l++]);
        while(p<=r)
            tmp.push_back(nums[p++]);
        
        for(int i=0;i<tmp.size();i++){
            nums[start+i]=tmp[i];
        }
    }
    vector<vector<int>> threeSum(vector<int>& nums) {
        // 先排序 在计算和
        int l=0;
        int r=nums.size()-1;
        // paixu(l,r,nums);
        sort(nums.begin(),nums.end());
        vector<vector<int>> ans;
        int a=0;
        while(a<nums.size()-2 && nums[a]<=0){
            int b=a+1;
            int c=nums.size()-1;
            while(b<c){
                if(nums[a] + nums[b] + nums[c] < 0) b++;
                else if(nums[a] + nums[b] + nums[c] > 0) c--;
                else{
                    ans.push_back(vector<int>{nums[a] ,nums[b] ,nums[c]});
                    b++;
                    c--;
                }

                //去重
                while(b>a+1 && b<nums.size()-1 &&nums[b-1]==nums[b]){
                    b+=1;
                }
                while(c>=1 && c<nums.size()-1 &&nums[c+1]==nums[c]){
                    c-=1;
                }

            }
            a+=1;
            while(a>=1 && a<nums.size()-1 && nums[a-1]==nums[a]){
                a+=1;
        }
        }   

        return ans;
        
    }
};

请添加图片描述

相关推荐

  1. LeetCode-15. 之和

    2024-03-29 21:22:03       44 阅读
  2. [LeetCode] 15. 之和

    2024-03-29 21:22:03       43 阅读
  3. LeetCode 15 之和

    2024-03-29 21:22:03       39 阅读
  4. leetcode15. 之和

    2024-03-29 21:22:03       36 阅读
  5. Leetcode15. 之和

    2024-03-29 21:22:03       34 阅读
  6. LeetCode 15. 之和

    2024-03-29 21:22:03       31 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-29 21:22:03       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-29 21:22:03       20 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-29 21:22:03       20 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-29 21:22:03       20 阅读

热门阅读

  1. MyLisp项目日志:函数

    2024-03-29 21:22:03       20 阅读
  2. 只出现一次的数字

    2024-03-29 21:22:03       21 阅读
  3. GoogLenet网络结构及代码实现

    2024-03-29 21:22:03       20 阅读
  4. Vue实现SQL语句关键字高亮显示?

    2024-03-29 21:22:03       22 阅读
  5. go中方法的Receiver (值类型&指针类型)

    2024-03-29 21:22:03       19 阅读
  6. 【JVM】双亲委派机制

    2024-03-29 21:22:03       21 阅读