演算法系列#6 In-Place Reversal of linked list
在很多問題中,我們很常被問到將一個 linked list 做 reverse,並且要求我們必須符合 in-place,也就是不使用額外的記憶體空間,因此就有了這個 pattern
我們會設置兩個 pointer,一個 current 指向當前的 node;一個 previous 指向前一個 node
過程會是將當前 node 的 next 指向 previous,並將 current 指向當前 node 原本的 next,previous 指向當前 node
以下為範例
1 | // head 是這個 linked list 的頭 |
這樣就是一個簡單的 in-place reverse
如何分辨
- 當你被要求 reverse 一個 linked list 並且不能使用額外的 memory 時
題目
- Reverse a Sub-list (medium)
- Reverse every K-element Sub-list (medium)