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

    // 返回和为target的两个元素
    vector<int> twoSum(vector<int> nums, int target){
        sort(nums.begin(),nums.end());
        int lo = 0, hi = nums.size()-1;
        vector<int> ans;
        while(lo<hi){
            if(nums[lo]+nums[hi]==target){
               ans.push_back(nums[lo]);
               ans.push_back(nums[hi]); 
               return ans;
            } else if(nums[lo]+nums[hi]<target) lo++;
            else hi--;  
        }
        return {};
    }
    
    //返回和为target的两个元素(所有),添加略过相同元素模块
    
    vector<int> twoSum(vector<int> nums, int target){
        sort(nums.begin(),nums.end());
        int lo = 0, hi = nums.size()-1;
        vector<int> ans;
        while(lo<hi){
            if(nums[lo]+nums[hi]<target) while(nums[lo]==nums[lo+1] && nums[lo+1]+nums[hi]<target) lo++;
            else if(nums[lo]+nums[hi]>target) while(nums[hi-1]==nums[hi] && nums[lo]+nums[hi-1]>target) hi--;
            else if(nums[lo]+nums[hi] == target){
                ans.push_back(nums[lo]);
                ans.push_back(nums[hi]);
                while(nums[lo+1]+nums[hi] == target) lo++;
                while(nums[lo]+nums[hi-1] == target) hi--;
            }
        }
        return ans;
    
    }
    
    //改良版
    // 优化版本
    vector<int> twoSum(vector<int> nums, int target){
        sort(nums.begin(),nums.end());
        int lo = 0, hi = nums.size() - 1;
        vector<vector<int>> ans;
        while(lo<hi){
            int sum = nums[lo] + nums[hi];
            int left = nums[lo], right = nums[hi];
            if(sum<target){
                while(lo<hi && nums[lo]==left) lo++;
            }else if(sum>target){
                while(lo<hi && nums[hi] == right) hi--;
            }else{
                ans.push_back({left,right});
                while(lo<hi && nums[lo] == left) lo++;
                while(lo<hi && nums[hi] == right) hi--;
            }
        }
        return ans;
    }
    
  • 相关阅读:
    IDEA取消自动更新
    string常见面试题
    IDEA不能运行main方法
    GIT: Incorrect username or password
    淘宝技术架构演进之路
    javac编译原理之生死人肉白骨
    this string "--" is not permitted within comments ,(mapper文件)注释中不能使用--
    IE下input的type=file需要双击触发
    解决问题思路
    python
  • 原文地址:https://www.cnblogs.com/maxwell-maxwill/p/15410786.html
Copyright © 2011-2022 走看看