1. 程式人生 > >劍指Offer42:和為S的兩個數字

劍指Offer42:和為S的兩個數字

思路:

數列滿足遞增,設兩個頭尾兩個指標low和high,

若array[low]+array[high]==tsum,就是答案(low和high相差越遠乘積越小)

若array[low]+array[high]>tsum,high-=1

若array[low]+array[high]>tsum,low+= 1

# -*- coding:utf-8 -*-
class Solution:
    def FindNumbersWithSum(self, array, tsum):
        # write code here
        low=0
        high=len(array)-1
        res=[]
        while low<high:
            if array[low]+array[high]==tsum:
                res.append(array[low])
                res.append(array[high])
                low+=1
                high-=1
            elif array[low]+array[high]>tsum:
                high-=1
            else:
                low+=1
        return res[:2]