串列應用: 反轉整個串列Reverse Linked List_Leetcode #206_Leetcode 精選75

2023/09/21閱讀時間約 3 分鐘
raw-image

題目敘述

題目的輸入會給我們一個串列,要求我們從頭到尾反轉整個串列。

如果輸入是1 -> 2 -> 3,那麼輸出就是 3 -> 2 -> 1


測試範例

Example 1:

raw-image
Input: head = [1,2,3,4,5]
Output: [5,4,3,2,1]

Example 2:

raw-image
Input: head = [1,2]
Output: [2,1]

Example 3:

Input: head = []
Output: []

約束條件

Constraints:

  • The number of nodes in the list is the range [0, 5000].
  • -5000 <= Node.val <= 5000

進階提問

Follow up: A linked list can be reversed either iteratively or recursively. Could you implement both?

試著用遞迴法和迭代法去實現。


演算法

使用到double pointers 雙指針的技巧。

這邊的用法借用到sliding window 滑窗的概念

每一次迭代處理鄰近的兩個節點改變next的方向,從指向後方轉為指向前方。這次迭代處理完,再滑動到下一組鄰近的兩個節點,用同樣的方式去反轉,一直到抵達linked list 終點為止。

遞迴、DFS演算法的精隨也在此,尋找問題共通的形式,找出共同的最小操作單元,接著用遞迴去探索整個搜索空間Search space,解出原本的問題。

raw-image

以行動支持創作者!付費即可解鎖
本篇內容共 1589 字、0 則留言,僅發佈於Leetcode 精選75題 上機考面試題 詳解你目前無法檢視以下內容,可能因為尚未登入,或沒有該房間的查看權限。
45會員
288內容數
由有業界實戰經驗的演算法工程師, 手把手教你建立解題的框架, 一步步寫出高效、清晰易懂的解題答案。 著重在讓讀者啟發思考、理解演算法,熟悉常見的演算法模板。 深入淺出地介紹題目背後所使用的演算法意義,融會貫通演算法與資料結構的應用。 在幾個經典的題目融入一道題目的多種解法,或者同一招解不同的題目,擴展廣度,並加深印象。
留言0
查看全部
發表第一個留言支持創作者!