题目描述
输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
思路
- 设置两个指针,一前一后,因为数组递增有序
- 当前后指针和与S相等时,输出两个数字
- 当前后指针和比S大时,后指针前移一位
- 当前后指针和与S小时,前指针后移一位
- 直到i<j
# -*- coding:utf-8 -*-
class Solution:
def FindNumbersWithSum(self, array, tsum):
# write code here
if not array or not tsum:
return []
i=0
j=len(array)-1
while i<j:
sum1=array[i]+array[j]
if sum1==tsum:
return array[i],array[j]
elif sum1>tsum:
j-=1
else:
i+=1
return []
测试用例
if __name__=='__main__':
s=Solution()
numbers=[1,2,3,4,5,6,7]
print(s.FindNumbersWithSum(numbers,10))