問題
給定一個遞增的整數陣列nums
(已排序),其中有兩個數的和會等於目標target
,回傳他們的位置,且同個位置不能重複選取。
輸入
numbers = [2, 7, 11, 15]
target = 9
輸出
[1, 2]
方法
這題是LeetCode#1 Two Sums的改版,差別是這題輸入的陣列已經經過排序了,這題還是可以用hash table
來解,不過這裡我們要用比較不一樣的方法,叫作two pointers
。
two pointers
在這裡的使用方法,就是兩個箭頭分別指向陣列的頭跟尾,藉由將左邊的箭頭向右調整以及右邊的箭頭向左調整,逼近出所要求的值。
1 | class Solution(object): |
以下的問題也常常用two pointers
來解: 1. 字串、陣列反轉 2. 兩個跑者一快一慢在操場上奔馳,問兩人何時相遇 3. 字串回文(Palindrome)