題目連結:
題目意譯:
(2022/06/10:原英文題目敘述有更新過,本篇需要修正)
給定一個已按照升序排序的整數陣列,找到兩個數字使得其總和為 target。
函式 twoSum 應回傳兩數總和為 target 的索引值 index1 、 index2 ,且 index1 必須小於 index2。
注:
你回傳的答案(index1 以及 index2)不是從 0 開始數的(從 1 開始)。
你可以假設每個輸入有唯一解且同一元素不能使用兩次。
範例測資:
範例:
輸入: numbers = [2,7,11,15], target = 9
輸出: [1,2]
解釋: 2 與 7 的總和為 9。因此 index1 = 1 、 index2 = 2。
解題思維:
但是因為有排序過了,因此我們也可以使用二分搜尋法(Binary Search)來找到解。對於每個數字 numbers[i] ,在 numbers 裡用二分搜找找看有無存在 target - numbers[i]。如果有的話且該值的索引值不等於 i 即是所求。反之,就繼續到下一個數字即 numbers[i + 1]。
此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。