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;
    }
    
  • 相关阅读:
    浏览器渲染流程
    MVC模式
    传统的DOM是如何进行渲染的
    报文的概念及理解
    单页面开发与多页面开发的优缺点
    第4次作业
    售票系统
    第三次作业
    第二次作业
    第一次作业
  • 原文地址:https://www.cnblogs.com/maxwell-maxwill/p/15410786.html
Copyright © 2011-2022 走看看