雙重指標(Two Pointer)是一種高效的算法技巧,常用於解決涉及數組或鏈表的問題。其使用兩個指標遍歷數據結構,指標可以是固定或可變的,根據問題的不同而變化。當兩個指針同時從數組的兩端開始時,通常用於查找數字的配對問題;而當一個指針用來追蹤當前狀態,另一個指針用來檢查後續元素時,則適用於連續子序列的問題。透過動態調整指針位置,雙重指標技術能夠有效地減少不必要的運算,從而提高效率。
範例說明
問題:在有序數組中,找到兩個數字,使它們的和等於目標值。例如,給定數組 [1, 2, 3, 4, 6] 和目標值 4,結果會找出數字 1 和 3。
解法:使用兩個指標,分別指向數組的開始和結束位置。計算這兩個指針指向的數字的和,如果和等於目標值,則返回這兩個數字;如果和小於目標值,則將左指針向右移動,增加和;如果和大於目標值,則將右指針向左移動,減少和。重複這個過程直到找到結果。
優點:
缺點: