劍指offer 面試題 57 和為 S 的數字

2021-08-07 10:49:07 字數 682 閱讀 5276

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

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

時間限制:1秒

空間限制:32768k

熱度指數:62731

思路

要找兩個數的和為s,並不難,但是如果存在多個符合這樣要求的數,那麼要找兩個數的積最小的。

我們發現陣列是排序數字,陣列首尾數字之積是小於中間數字之積的。

所以要找符合要求的數,乙個是從陣列的前面開始找,乙個是從陣列的後面找。

如果首尾兩個數字的和等於s,則直接返回。(不要判斷其他符合情況的數,這兩個數的積就是最小,因為首尾的積就是比中間數的積要小)

如果首尾兩個數字的和大於s,則說明陣列尾部的那個數太大了,往陣列前面移就可以了;

如果首尾兩個數字的和小於s,則說明陣列頭部的那個數太小了,往陣列後面移就可以了。

參考**

class solution else if(array[start] + array[end] < sum)

start++;

else

end--;

}return result;

}};

劍指offer 面試題57 和為s的數字

輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,使得他們的和正好是s,如果有多對數字的和等於s,輸出兩個數的乘積最小的。解決 public arraylistfindnumberswithsum int array,int sum else if array left array right...

劍指Offer 面試題57 和為 s 的數字

題目 輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,使得它們的和正好是s。如果有多對數字的和等於s,輸出任意一對即可。題目 輸入乙個正數s,列印出所有和為s的連續正數序列 至少含有兩個數 例如輸入15,由於1 2 3 4 5 4 5 6 7 8 15,所以結果列印出3個連續序列1 5 4 ...

劍指offer 面試題57 和為s的數字

每日一句 we hold ourselves back in ways both big and small,by lacking self confidence,by not raising our hands,and by pulling back when we should be leani...