# 92 - Reverse Linked List II
解法一 - Iterative 解
這題的思考方法如下:
首先,因為 1 m n length of list,head 是有可能被改動的,所以需要創造一個 dummy,讓 head 跟一般 node 一樣容易使用
因為我們需要 reverse m~n 之間的 node,所以需要 prev 跟 next 來幫忙。
因為 reverse 完之後,還得接出對的 list,所以需要紀錄 m 之前的 node (nodeBeforeRev) 跟 n 之後的 node (nodeAfterRev)。
這樣解的時間效率很不錯,不過空間上就不是那麼好:
Runtime: 0 ms, faster than 100.00% of C++ online submissions for Reverse Linked List II. Memory Usage: 8.7 MB, less than 56.45% of C++ online submissions for Reverse Linked List II.
解法二 - Recursion
reverse 類的問題常常也可以用 recursion 來解決,比如說要 reverse 一個 array,我們可以先交換頭跟尾的兩個 element,等到頭跟尾交換完,我們的子問題就變成扣掉頭跟尾兩個 element 的剩餘 array.
同理我們也可以對 linked list 中要 reverse 的部分用同樣的方式處理:
Last updated