題目描述
輸入一個遞增排序的數組和一個數字s,在數組中查找兩個數,使得他們的和正好是s,如果有多對數字的和等于s,輸出兩個數的乘積最小的。
輸出描述:
對應每個測試案例,輸出兩個數,小的先輸出。
有了上一題的基礎,解決這題應該不難,思路與上一題差不多,不過這裡隻需要要求兩個數字即可。是以可以設定兩個指針,第一個指針指向數組的第一個元素,第二個指針指向最後一個元素,不斷改變第一個指針的位置就可以确定和為s的兩個數字。這裡還有一個要求是這兩個數字的乘積最小,實際上由于數組是遞增排序的,是以第一個找到的兩個數字就是乘積最小的兩個數字,相反如果要求是乘積最大的呢?當然是中間位置找到的那兩個數字了。這是數學上的知識了,不再贅述。是以雖然有了乘積最小的要求,實際上是形同虛設的,這裡實作的代碼如下(已被牛客ac):