zoukankan      html  css  js  c++  java
  • 《剑指offer》-递增数组中找到和为S的(最小)两个元素

    题目描述
    输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
    输出描述:
    对应每个测试案例,输出两个数,小的先输出。

    首先一个坑是,返回值的问题。题目描述说返回两个数字,并且小的在前面,大的在后面。
    C++的返回值明明只有一个啊?那就要放到数组或者其他容器里面,或者作为一个对象返回。。本题中使用vector容器进行存储。

    其次容易想到两边夹的方法,直接写就好了

    class Solution {
    public:
        vector<int> FindNumbersWithSum(vector<int> a,int sum) {
            int i=0, j=a.size()-1;
            vector<int>res;
            while(i<j){
                int t = a[i] + a[j];
                if(t==sum){
                    res.push_back(a[i]);
                    res.push_back(a[j]);
                    break;
                }
                if(t<sum){
                    i+=1;
                }else{
                    j-=1;
                }
            }
            return res;
        }
    };
    
  • 相关阅读:
    python-杂烩
    24 Python 对象进阶
    23 Python 面向对象
    22 Python 模块与包
    21 Python 异常处理
    20 Python 常用模块
    18 Python 模块引入
    2 Python 基本语法
    1 Python 环境搭建
    3 Python os 文件和目录
  • 原文地址:https://www.cnblogs.com/zjutzz/p/6506495.html
Copyright © 2011-2022 走看看