【劍指Offer】42和爲S的兩個數字

題目描述

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

輸出描述:數組

對應每一個測試案例,輸出兩個數,小的先輸出。app

時間限制:1秒;空間限制:32768K測試

解題思路

若是存在兩個數和爲S,那麼這兩數差值越大(即離得越遠)則乘積越小。code

利用for循環求兩數和爲S,外循環正序,內循環倒序,則第一次找到的結果即爲乘積最小的結果。排序

# -*- coding:utf-8 -*-
class Solution:
    def FindNumbersWithSum(self, array, tsum):
        # write code here
        l = []
        for i in range(len(array)): #外循環正序
            for j in range(len(array)-1,-1,-1): #內循環倒序
                if array[i]+array[j]==tsum and array[i]!=array[j]: #不能是同一個值
                    l.append(array[i])
                    l.append(array[j])
                    return l
        return l
相關文章
相關標籤/搜索