總綱
雙指針指在遍歷過程中使用兩個指針進行掃描達到目的。大致分爲快慢指針(相同方向)和左右指針(相向方向)。
值得一提的是,左右指針是很多算法的基礎和搭配,如 歸併排序、滑動窗口、字符匹配、單調棧
等。
快慢指針
快慢指針一般解決鏈表問題。
指針初始化指向 head,前進時 fast 在前,slow 在後,具體的步幅根據題目決定。
題目舉例
題號 | 題目 | 難度 |
---|---|---|
141 | 環形鏈表 | 簡單 |
142 | 環形鏈表II | 中等 |
劍指14 | 倒數第k個節點 | 簡單 |
左右指針
左右指針主要解決數組/字符串問題。
兩個索引值,一個指向開頭 left = 0,一個指向末尾 right = nums.length - 1。
題目舉例
題號 | 題目 | 難度 |
---|---|---|
704 | 二分查找 | 簡單 |
167 | 兩數之和II | 簡單 |
633 | 平方數之和 | 簡單 |
653 | 兩數之和IV | 簡單 |