剑指offer - 和为s的两个数

题目描述

输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。

思路

双指针。这个题和剑指offer的第一个题很像。第一个题是在一个二维的排序矩阵中找到target,也是用的双指针

class Solution:
    def FindNumbersWithSum(self, array, tsum):
        if not array:
            return []
        
        i = 0
        j = len(array)-1
        while i < j:
            if array[i]+array[j]<tsum:
                i+=1
            elif array[i]+array[j]>tsum:
                j-=1
            else:
                break
        if array[i]+array[j]==tsum:
            return array[i],array[j]
        else:
            return []
发布了82 篇原创文章 · 获赞 2 · 访问量 4351

猜你喜欢

转载自blog.csdn.net/qq_22498427/article/details/104818746