42 和為S的兩個數字

2021-09-27 18:44:08 字數 587 閱讀 3673

題目描述:輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,使得他們的和正好是s,如果有多對數字的和等於s,輸出兩個數的乘積最小的。

輸出描述:

對應每個測試案例,輸出兩個數,小的先輸出。
【分析】

定義兩個指標,乙個從左往右遍歷(pleft),另乙個從右往左(pright)。比較第乙個數字和最後乙個數字的和cursum與給定數字sum:

(1)cursum < sum,加大輸入值——pleft向右移動一位,重複之前計算

(2)cursum > sum,減小輸入值——pright向左移動一位,重複之前計算

(3)cursum ==sum,那麼這兩個數字就是我們要找的數字,輸出即可。

這麼做的好處是,也保證了乘積最小——兩個數差越大,乘積越小。

class solution 

else if(curlsumelse//curlsum==sum,相等時,輸出

}return result;

}};

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