和為S的兩個數字

2022-07-24 08:39:12 字數 567 閱讀 1272

輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,使得它們的和正好是s。如果有多對數字的和等於s,輸出任意一對即可。

菜鳥的寫法是順序掃瞄,時間複雜度是o(n2)。下面給出一種大牛的寫法,時間複雜度只需o(n)。

1

/////////////////////

/和為s的兩個數字

//////////////////////////////////2

3bool findnumberswithsum(int* data , int length , int

sum)49

int begin = 0;10

int end = length - 1;11

while (begin 1219

else

if (cursum > sum)//

當前和大於 sum ,end指標向後走一位

2023

else

//當前和小於 sum ,begin指標向前走一位

2427}28

return

false

;29 }

和為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...