博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【剑指offer python】和为S的两个数字
阅读量:2382 次
发布时间:2019-05-10

本文共 729 字,大约阅读时间需要 2 分钟。

题目链接

题目描述

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

输出描述:

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

 

思路:

若array[left] + array[right] == tsum,就是答案(相差越远乘积越小)

若array[left] + array[right] > tsum,aj肯定不是答案之一(前面已得出 i 前面的数已是不可能),right -= 1

若array[left] + array[right] < tsum,ai肯定不是答案之一(前面已得出 j 后面的数已是不可能),left += 1

 

solution

class Solution:    def FindNumbersWithSum(self, array, tsum):        left , right = 0 , len(array) - 1        while left < right:            if array[left] + array[right] > tsum:                right = right - 1            elif array[left] + array[right] < tsum:                left = left + 1            elif array[left] + array[right] == tsum:                return [array[left],array[right]]        return []

 

转载地址:http://zbfab.baihongyu.com/

你可能感兴趣的文章
Median of Two Sorted Arrays
查看>>
Search for a Range
查看>>
罗马数字与阿拉伯数字的相互转化
查看>>
3Sum
查看>>
Next Permutation
查看>>
sys文件系统
查看>>
Mysql常用命令大全
查看>>
辞职后五险一金怎么处理?
查看>>
几种开源的TCP/IP协议栈对比
查看>>
C语言之断言
查看>>
程序员技术练级攻略
查看>>
#define
查看>>
C语言之if...else PK switch...case
查看>>
关于SVN方面的问题
查看>>
深入理解C语言
查看>>
编程成就:开发人员如何升级
查看>>
如何防止代码腐烂
查看>>
va_start va_end 的使用和原理
查看>>
Linux 中的零拷贝技术,第 2 部分
查看>>
零拷贝技术的研究与实现
查看>>