劍指Offer(Python多種思路實現):和爲s的數字

劍指Offer(Python多種思路實現):和爲s的數字

面試57題:

題目:和爲s的數字

題目描述

輸入一個遞增排序的數組和一個數字S,在數組中查找兩個數,是的他們的和正好是S,如果有多對數字的和等於S,輸出兩個數的乘積最小的。

解題思路一:使用while循環從兩端向中間掃描數組,時間複雜度爲O(n)

class Solution:
    def FindNumbersWithSum(self, array, tsum):
        # write code here
        if len(array)<2:
            return []
        found=False
        fst,lst=0,len(array)-1
        while fst<lst:
            sum_total=array[fst]+array[lst]
            if sum_total==tsum:
                found=True
                return [array[fst],array[lst]]
            elif sum_total<tsum:
                fst +=1
            else:
                lst -=1
        return []

解題思路二:

def FindNumbersWithSum(self, array, tsum):
    l, r = 0, len(array)-1
    while l < r:
        if array[l] + array[r] < tsum:
            l += 1
        elif array[l]+array[r] > tsum:
            r -= 1
        else:
            return array[l], array[r]
    return []

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章