輸入乙個鍊錶,反轉鍊錶後,輸出新鍊錶的表頭。
1、遞迴
遞迴三要素:
以下面例子為例
reverselist(head.next)可以得到下圖,這是我們只需讓head與head.next指標交換一下即可。
所以我們得到等價條件:
reverselist(head)等價於reverselist(head.next)+ 改變一下1,2兩個節點的指向。
寫出遞迴式。
2、非遞迴
以鍊錶的頭部節點為基準節點
將基準節點的下乙個節點挪到頭部作為頭節點
當基準節點的next
為null
,則其已經成為最後乙個節點,鍊錶已經反轉完成
**1
//用遞迴的方法反轉鍊錶
varreverselist
=function
(head)
// 遞迴反轉子鍊錶
var newlist =
reverselist2
(head.next)
;// 改變 1,2節點的指向。
// 通過 head.next獲取節點2
let t1 = head.next;
// 讓 2 的 next 指向 2
t1.next = head;
// 1 的 next 指向 null.
head.next =
null
;// 把調整之後的鍊錶返回。
return newlist;
}
**2var
reverselist
=function
(head)
//返回反轉鍊錶
return headnode;
}
?資料結構專欄:劍指 offer 題解 + js **
?github筆記 :ruoruochen github
leetcode 92反轉鍊錶
反轉從位置 m 到 n 的鍊錶。請使用一趟掃瞄完成反轉。說明 1 m n 鍊錶長度。示例 輸入 1 2 3 4 5 null,m 2,n 4 輸出 1 4 3 2 5 null definition for singly linked list.public class listnode class...
LeetCode 92 反轉鍊錶 II
反轉從位置 m 到 n 的鍊錶。請使用一趟掃瞄完成反轉。說明 1 m n 鍊錶長度。示例 輸入 1 2 3 4 5 null,m 2,n 4 輸出 1 4 3 2 5 null 5ms definition for singly linked list.public class listnode c...
leetcode92 反轉鍊錶 II
反轉從位置 m 到 n 的鍊錶。請使用一趟掃瞄完成反轉。說明 1 m n 鍊錶長度。示例 輸入 1 2 3 4 5 null,m 2,n 4輸出 1 4 3 2 5 null思路 先往後遍歷找到需要反轉的節點作為起點 count m 然後按照劍指offer 反轉鍊錶 的思路,設定curr,pre,p...