zoukankan      html  css  js  c++  java
  • 3Sum

    思路:

    先排序,从小到大。

    三个数的加法,可以先确定一个数,剩下两个数在剩下的范围找,当总和比目标值大,就让最大的范围数减小,小就让最小的数增加。

    注意几点就是:

    第1个数,后面两个数可以有多种,所以要搜完所有数。

    对于重复的数,可以跳过。

    class Solution {
    public:
        vector<vector<int>> threeSum(vector<int>& nums) {
           vector<vector<int>> trip;
           trip.clear();
           if(nums.size()<3) return trip;
            sort(nums.begin(),nums.end());
                int i=0,j,k;
                while(i<nums.size()-2)
                {
                    while(i>0 &&nums[i]==nums[i-1]) i++;
                    j=i+1;k=nums.size()-1;
                    while(j<k )
                    {
                        while(j>i+1 &&nums[j]==nums[j-1] &&j<k) j++;
                        while(k<nums.size()-1 &&nums[k]==nums[k+1] &&j<k) k--;
                        while(nums[i]+nums[j]+nums[k]>0 &&j<k) k--;
                        while(nums[i]+nums[j]+nums[k]<0 &&j<k) j++;
                        if(nums[i]+nums[j]+nums[k]==0 &&j<k)
                        {
                            vector<int> a;
                           a.push_back(nums[i]);
                           a.push_back(nums[j]);
                           a.push_back(nums[k]);
                           trip.push_back(a);
                           j++;k--;
                        }
                        
                    }
                    i++;
                    
                }
                return  trip;
                
        }
    };
    View Code
  • 相关阅读:
    compareTo冒泡比较时间字符串
    RestTemplate
    poi 处理空单元格
    Linux执行Java文件
    cmd 运行 java 文件
    @RequestParam 引发的编译问题
    linux 下安装与使用
    ajax请求 Provisional headers are show
    JWT加密
    Web API Filter
  • 原文地址:https://www.cnblogs.com/daocaorenblog/p/5223163.html
Copyright © 2011-2022 走看看