题目描述
输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
思路
- 设置两个指针,一前一后,因为数组递增有序
- 当前后指针和与S相等时,输出两个数字
- 当前后指针和比S大时,后指针前移一位
- 当前后指针和与S小时,前指针后移一位,直到i<j
class Solution:
def FindNumbersWithSum(self, array, tsum):
# write code here
if not array:
return []
if len(array) < 2:
return []
i = 0
j = len(array) - 1
while array[i] + array[j] != tsum and i < j:
temp = array[i] + array[j]
if temp < tsum:
i += 1
else:
j -= 1
if i < j:
return [array[i],array[j]]
return []