题目
输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
方法:双指针法
class Solution:
def FindNumbersWithSum(self, array, tsum):
# write code here
if array==[]:#判断边界条件
return []
result=[]
l=len(array)
i,j=0,l-1
low=array[i]#定义两个双指针,一个指向列表的最大值,一个指向列表的最小值,这样求出来的值的乘积也是最小的。
high=array[j]
while low<high:
if low+high==tsum:
result.append(low)
result.append(high)
return result
elif low+high>=tsum:
j-=1
high=array[j]
else:
i+=1
low=array[i]
return []