zoukankan      html  css  js  c++  java
  • 三数之和

    class Solution {
    public:
        vector<vector<int>> threeSum(vector<int>& nums) {
            vector<vector<int>> res;
            if(nums.size()<3) return res;

            sort(nums.begin(),nums.end());
            for(int i=0;i<nums.size()-2;i++){
                if(i>0 && nums[i]==nums[i-1]) continue;

                int left=i+1,right=nums.size()-1;
                while(left<right){
                    if(nums[left]+nums[right]+nums[i]==0){
                        res.push_back(vector<int>());
                        res.back().push_back(nums[i]); 
                        res.back().push_back(nums[left]); 
                        res.back().push_back(nums[right]);
                        left+=1;         
                        right-=1;
                        
                        while(left<right && nums[left]==nums[left-1]) left+=1;

                        while(left<right && nums[right]==nums[right+1]) right-=1;
                    }
                    else if(nums[left]+nums[right]+nums[i]<0){
                        left+=1;
                    }
                    else{
                        right-=1;
                    }
                }
            }
            return res;

        }
    };
  • 相关阅读:
    2804 最大最小数质因数
    5429 多重背包
    1851 越狱
    Gvim使用
    3622 假期
    4906 删数问题
    2845 排序的代价
    poj 3352
    常用正则表达式汇总
    功能简单例子
  • 原文地址:https://www.cnblogs.com/zijidan/p/12435292.html
Copyright © 2011-2022 走看看