题目描述:
输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
解题思路:
一种方法就是用两个指针,因为是排序数列,一个从前,一个从后,如果和小于S,前面的指针走一步,如果和大于S,后面的指针走一步
# -*- coding:utf-8 -*-
class Solution:
def FindNumbersWithSum(self, array, tsum):
# write code here
fp = 0
bp = len(array) - 1
result_list = []
minmul = float("inf")
while fp < bp:
if array[fp] + array[bp] == tsum:
mul = array[fp]*array[bp]
if mul < minmul:
result_list = [array[fp], array[bp]]
minmul = mul
fp += 1
bp -= 1
elif array[fp] + array[bp] > tsum:
bp -= 1
elif array[fp] + array[bp] < tsum:
fp += 1
return result_list