1.题目
输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
2.思路
思路:由于是排好序的数组,因此对于和相等的两个数来说,相互之间的差别越大,那么乘积越小,因此我们使用两个指针,一个从前往后遍历,另一个从后往前遍历数组即可。
3.代码
# -*- coding:utf-8 -*-
class Solution:
def FindNumbersWithSum(self, array, tsum):
# write code here
if len(array)<2:
return []
i = 0
j = len(array)-1
while i < j:
if array[i]+ array[j]> tsum:
j -= 1
elif array[i] + array[j]<tsum:
i += 1
else:
return [array[i], array[j]]
return []