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

    三数之和

    给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。

    注意:答案中不可以包含重复的三元组。

    例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],
    满足要求的三元组集合为
    [[-1, 0, 1],[-1, -1, 2]]

    暴力解超时

    思路:选定一个值,两侧逼近求两数和

    vector<vector<int>> threeSum(vector<int>& nums) {
    	sort(nums.begin(), nums.end());
    	set<vector<int>> res;
        if(nums.size()>2)
        {
            for(int i=0;i<nums.size()-1;i++)
            {
                if(nums[i]>0)
                    break;
                int j=i+1;
                int k=nums.size()-1;
                int target=-nums[i];
                while(j<k)
                {
                    if(nums[j]+nums[k]==target)
                    {
                        vector<int> temp = { nums[i],nums[j],nums[k]};
                        res.insert(temp); 
                        j++,k--;
                    }
                    if(nums[j]+nums[k]>target)
                        k--;
                    if(nums[j]+nums[k]<target)
                        j++;
                } 
            }
        }
        return vector<vector<int>>(res.begin(),res.end());
    }
    
  • 相关阅读:
    Arctic Network POJ
    Journey CodeForces
    Free Goodies UVA
    MU Puzzle HDU
    Balance POJ
    1sting 大数 递推
    最大报销额 暴力。。
    洛谷P2826 LJJ的数学课
    2018年12月29日
    2018年12月28日
  • 原文地址:https://www.cnblogs.com/wendyy/p/9316801.html
Copyright © 2011-2022 走看看