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());
    }
    
  • 相关阅读:
    windows 快捷键
    MySQLorder by用法
    Idea-2020.1.3破解
    Java-FTP上传下载
    Java-byte转换
    Java-执行shell命令
    Java-文件加密传输(摘要+签名)
    AmazonRekognition-Java对接
    Java-File转MultipartFile
    AmazonS3-Java对接
  • 原文地址:https://www.cnblogs.com/wendyy/p/9316801.html
Copyright © 2011-2022 走看看