zoukankan      html  css  js  c++  java
  • 面试题57:和为S的数字

    1 题目描述

      输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。

    2 输入

    num[], S

    3 输出

      输出两个数,小的先输出。

    4 样例输入

    1,2,3,5,7,10,11,15
    

    5 样例输出

    4,11
    

    6 求解思路

      双指针法,first从0开始,end从length - 1开始。

    7 C++版本代码如下

    vector<int> FindNumbersWithSum(vector<int> array, int sum){
        vector<int> ans;
        int length = array.size();
        if(length < 2)
            return ans;
        // 定义双指针
        int first = 0;
        int end = length - 1;
        while(first < end){
            if(array[first] + array[end] == sum){
                ans.push_back(array[first]);
                ans.push_back(array[end]);
                break;
            }
            else if(array[first] + array[end] > sum)
                end--;
            else if(array[first] + array[end] < sum)
                first++;
        }
        return ans;
    }
    
  • 相关阅读:
    mstsc远程桌面 mstsc /v:ip /admin
    JS模块化编程(五)---按照AMD规范扩展全局对象
    常见问题
    django--用户认证组件
    Django
    Django
    Django
    Django
    Django
    第六模块-图书管理系统--多表
  • 原文地址:https://www.cnblogs.com/flyingrun/p/13556283.html
Copyright © 2011-2022 走看看