• 两数之和


    // 返回和为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;
    }
    
  • 相关阅读:
    利用线程制作简单定时器
    VScode小白简介
    WebService介绍及C/C++访问
    Redis的C++与JavaScript访问操作
    Redis的安装配置及简单集群部署
    解决npm被墙的问题
    【学习整理】第三章 使用字符串
    【学习整理】第四章 字典
    【学习整理】第二章 列表和元祖
    【学习整理】第一章 基础知识部分 常用函数 简单语法
  • 原文地址:https://www.cnblogs.com/maxwell-maxwill/p/15410786.html
Copyright © 2020-2023  润新知