演算法題 和為s的兩個數字

2021-08-07 12:34:00 字數 970 閱讀 3649

題目:輸入乙個亂序的陣列和乙個數字s,在陣列中查詢兩個數,是的他們的和正好是s,如果有多對數字的和等於s,輸出兩個數。

思路:

1.輸入的是亂序陣列,先對陣列從小到大排序

2.small指向最小值,big指向最大值,sum=small+big

3,如果sum大於s說明big太大,將big指標左移一位,如果sum小於s說明small太小,將small指標右移一位,知道small>=big

#coding:utf-8

defkuaisu

(a):

low =

high =

median =

if len(a) <=1:

return a

else:

baseline = a[0]

for i in a:

if i < baseline:

elif i > baseline:

else:

low_arr = kuaisu(low)

high_arr = kuaisu(high)

return low_arr+median+high_arr

defget_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))

和為S的兩個數字

題目描述 輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,是的他們的和正好是s,如果有多對數字的和等於s,輸出兩個數的乘積最小的。輸入 每個測試案例包括兩行 第一行包含乙個整數n和k,n表示陣列中的元素個數,k表示兩數之和。其中1 n 10 6,k為int 第二行包含n個整數,每個陣列均為i...

和為S的兩個數字

輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,是的他們的和正好是s,如果有多對數字的和等於s,輸出兩個數的乘積最小的。輸出描述 對應每個測試案例,輸出兩個數,小的先輸出。class solution public vectorfindnumberswithsum vectorarray,i...

和為s的兩個數字

輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,是的他們的和正好是s,如果有多對數字的和等於s,輸出兩個數的乘積最小的。輸出描述 對應每個測試案例,輸出兩個數,小的先輸出。include using namespace std bool twonumberwithsum int data,i...