算法題/和爲s的兩個數字

python2.7

題目:輸入一個亂序的數組和一個數字S,在數組中查找兩個數,是的他們的和正好是S,如果有多對數字的和等於S,輸出兩個數。
思路:
1.輸入的是亂序數組,先對數組從小到大排序
2.small指向最小值,big指向最大值,sum=small+big
3,如果sum大於s說明big太大,將big指針左移一位,如果sum小於s說明small太小,將small指針右移一位,知道small>=big

#coding:utf-8
def kuaisu(a):
        low = []
        high =[]
        median =[]
        if len(a) <=1:
            return a
        else:
            baseline = a[0]
            for i in a:
                if i < baseline:
                    low.append(i)
                elif i > baseline:
                    high.append(i)
                else:
                    median.append(i)
            low_arr = kuaisu(low)
            high_arr = kuaisu(high)
            return low_arr+median+high_arr


def get_sum_s(a,n):
    a = kuaisu(a)
    low =0
    high = len(a)-1
    while low < high:
        if a[low]+a[high] == n:
            return[a[low],a[high]]
        elif a[low]+a[high] < n:
            low +=1
        elif a[low]+a[high] > n:
            high -=1
        else:
            return False

print(get_sum_s([1,2,4,7,11,15],15))

這裏寫圖片描述

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