iT邦幫忙

2024 iThome 鐵人賽

DAY 26
0

雙重指標Two Pointer)是一種高效的算法技巧,常用於解決涉及數組或鏈表的問題。其使用兩個指標遍歷數據結構,指標可以是固定或可變的,根據問題的不同而變化。當兩個指針同時從數組的兩端開始時,通常用於查找數字的配對問題;而當一個指針用來追蹤當前狀態,另一個指針用來檢查後續元素時,則適用於連續子序列的問題。透過動態調整指針位置,雙重指標技術能夠有效地減少不必要的運算,從而提高效率。

範例說明
問題:在有序數組中,找到兩個數字,使它們的和等於目標值。例如,給定數組 [1, 2, 3, 4, 6] 和目標值 4,結果會找出數字 1 和 3。

解法:使用兩個指標,分別指向數組的開始和結束位置。計算這兩個指針指向的數字的和,如果和等於目標值,則返回這兩個數字;如果和小於目標值,則將左指針向右移動,增加和;如果和大於目標值,則將右指針向左移動,減少和。重複這個過程直到找到結果。


優點:

  • 時間複雜度低:每個元素只需被遍歷一次,避免了嵌套循環的情況,能有效優化時間複雜度。
  • 簡單易理解:雙指標法的邏輯直觀,通過簡單的條件判斷和指針調整,可以解決許多問題,特別是在有序數據情況下。

缺點:

  • 對數據結構的要求:雙重指標通常適用於特定類型的數據結構,如數組和鏈表。對於一些複雜的數據結構,可能不適用或不夠直觀。
  • 邊界處理:在使用雙指標時,需要仔細處理邊界情況,特別是在移動指標時,容易引發越界錯誤或漏掉某些元素的檢查。

上一篇
Day25 Sliding Window滑動視窗 - 題目2:438. Find All Anagrams in a String
系列文
Java刷題A:Leetcode Top 100 Liked26
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言