劍指offer 面試57題
阿新 • • 發佈:2018-06-10
pan 時間 num 遞增 true class pre elif TE
面試57題:
題目:和為s的數字
題目描述
輸入一個遞增排序的數組和一個數字S,在數組中查找兩個數,是的他們的和正好是S,如果有多對數字的和等於S,輸出兩個數的乘積最小的。 輸出描述:對應每個測試案例,輸出兩個數,小的先輸出。
解題思路:使用while循環從兩端向中間掃描數組,時間復雜度為O(n)
解題代碼:
# -*- coding:utf-8 -*- 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 []
劍指offer 面試57題