1. 程式人生 > >演算法題/和為s的兩個數字

演算法題/和為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))

這裡寫圖片描述