zoukankan      html  css  js  c++  java
  • 和为s的数字

    输入一个递增排序的数组和一个数字S,在数组中查找两个数,

    使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。

    1.自己用迭代器两个指针做的



    1.left开头right指向结尾
    2.如果和小于sum,说明太小了left右移寻找更的数
    3.如果和大于sum,说明太大了right左移寻找更的数
    4.和相等把left和right的数返回

    vector<int> FindNumbersWithSum(vector<int> & array,int sum) {
     vector<int> res;
    
    if(array.empty())
        return res;
    
    vector<int>:: iterator start=array.begin();
    
    vector<int>:: iterator end=array.end()-1;
    
    while (start<end)
    {
    
        if((*start)+(*end)==sum)
        {
            res.push_back(*start);
            res.push_back(*end);
            return  res;
        }
        else if((*start)+(*end)<sum)
        {
            start++;
        }
        else if((*start)+(*end)>sum)
        {
            end--;
        }
    
    }
    
    return res;
    
    }

    2牛客上 容器下标做

    class Solution {
    public:
        vector<int> FindNumbersWithSum(vector<int> array,int sum) {
            vector<int> result;
            int length = array.size();
            int start = 0;
            int end = length - 1;
            while (start < end)
            {
                if (array[start] + array[end] == sum)
                {
                    result.push_back(array[start]);
                    result.push_back(array[end]);
                    break;
                }
                else if (array[start] + array[end] < sum)
                    start++;
                else
                    end--;
            }
            return result;
        }
    };

     

  • 相关阅读:
    Windsor
    .net 常见异常及其翻译
    nginx
    数据库访问层封装
    web api HttpConfiguration
    ENode, 领域模型,DDD
    缓存 Redis
    win7 快捷键
    visual studio 快捷键
    c# 正则表达式
  • 原文地址:https://www.cnblogs.com/cgy1012/p/11427995.html
Copyright © 2011-2022 走看看