劍指offer面試題目 和為 s 的兩個數字

2021-08-04 15:29:15 字數 580 閱讀 2412

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

例如:輸入陣列{1 、2 、4、7 、11 、15 }和數字 15。由於 4+11 = 15 ,因此輸出 4 和 11 。

我們先在陣列中選擇兩個數字,如果它們的和等於輸入的 s,我們就找到了要找的兩個數字。如果和小於 s 呢?我們希望兩個數字的和再大一點。由於陣列已經排好序了,我們可以考慮選擇較小的數字後面的數字。因為排在後面的數字要大一些,那麼兩個數字的和也要大一些, 就有可能等於輸入的數字 s 了。同樣, 當兩個數字的和大於輸入的數字的時候,我們可以選擇較大數字前面的數字,因為排在陣列前面的數字要小一些。

class solution 

else

if (array[start] + array[end] < sum)

start++;

else

end--;

}return result;

}};

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

輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,是的他們的和正好是s,如果有多對數字的和等於s,輸出兩個數的乘積最小的。對應每個測試案例,輸出兩個數,小的先輸出。時間限制 1秒 空間限制 32768k 熱度指數 62731 思路 要找兩個數的和為s,並不難,但是如果存在多個符合這樣要求的數,...

劍指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 ...