美文网首页剑指Offer-Python-牛客网
面试题57.1:和为S的两个数字

面试题57.1:和为S的两个数字

作者: 凌霄文强 | 来源:发表于2019-01-16 16:22 被阅读0次

题目描述

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

输出描述:
对应每个测试案例,输出两个数,小的先输出。

知识点

数组


Qiang的思路

对于这个问题,只需要设置两个指针,一个指向数组的最左边,一个指向最右边,然后判断两个数的和和S是不是相等,如果相等的话就是要求的解。如果和大于S,说明最大值太大了,只需要将右边的指针往前走。如果小的话就需要将左边的指针往后走。如果两个指针的相对位置发生了改变,就说明并不存在题目要求的两个数,这时返回一个空个list即可。

# -*- coding:utf-8 -*-
class Solution:
    def FindNumbersWithSum(self, array, tsum):
        # write code here
        left=0
        right=len(array)-1
        while left<right:
            if array[right]+array[left]==tsum:
                return [array[left], array[right]]
            elif array[right]+array[left]>tsum:
                right-=1
            else:
                left+=1
        return []

作者原创,如需转载及其他问题请邮箱联系:lwqiang_chn@163.com
个人网站:https://www.myqiang.top

相关文章

  • 面试题57.1:和为S的两个数字

    题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,...

  • Java日记2018-06-12

    57.1 和为 S 的两个数字重新按照自己想法实现一遍,注意ArrayList的泛型不能是int,只能是Integ...

  • Java日记2018-07-04

    55.1 二叉树的深度 数组中只出现一次的数字 57.1 和为 S 的两个数字注意此时的lst的排放英国是01 2...

  • 和为S的两个数字

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

  • 和为S的两个数字

    题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,...

  • 和为S的两个数字

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

  • 和为S的两个数字

    题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,...

  • 和为S的两个数字

    题目描述输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输...

  • 和为S的两个数字

    题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,...

  • 和为S的两个数字

    时间限制:1秒 空间限制:32768K 题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们...

网友评论

    本文标题:面试题57.1:和为S的两个数字

    本文链接:https://www.haomeiwen.com/subject/dlvmdqtx.html