演算法題/和為s的兩個數字
阿新 • • 發佈:2018-12-29
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))