牛客66道编程题—— 和为s的两个数字

题目

输入一个递增排序的数组和一个数字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 []

你可能感兴趣的:(牛客66道编程题—— 和为s的两个数字)