資料結構之連結串列:206. 反轉連結串列
反轉一個單連結串列。
示例:
輸入: 1->2->3->4->5->NULL
輸出: 5->4->3->2->1->NULL
進階:
你可以迭代或遞迴地反轉連結串列。你能否用兩種方法解決這道題?
方法一
var reverseList = function(head) {
let p1 = head;
let p2 = null;
while(p1) {
const tmp = p1.next;
p1.next = p2;
p2=p1;
p1=tmp;
}
return p2;
};
精簡
var reverseList = function(head) {
let [p2, p1] = [null, head];
while (p1) {
let tmp = p1.next; // 1. 臨時儲存當前指標後續內容
p1.next = p2; // 2. 反轉連結串列
p2 = p1; // 3. 接收反轉結果
p1 = tmp; // 4. 接回臨時儲存的後續內容
}
return p2;
};
再精簡
var reverseList = function(head) {
let [p2, p1] = [null, head];
while (p1) {
[p1.next, p2, p1] = [p2, p1, p1.next];
}
return p2;
};
時間: O(n). 逐個推進故 O(n).
空間: O(1). 只用到了常數級額外空間故 O(1).
相關文章
- 連結串列面試題(二)---連結串列逆序(連結串列反轉)面試題
- **203.移除連結串列元素****707.設計連結串列****206.反轉連結串列**
- 反轉連結串列、合併連結串列、樹的子結構
- 資料結構之「連結串列」資料結構
- 資料結構之連結串列資料結構
- 反轉連結串列
- 資料結構實驗之連結串列九:雙向連結串列資料結構
- 資料結構實驗之連結串列二:逆序建立連結串列資料結構
- JavaScript資料結構 之 連結串列JavaScript資料結構
- 資料結構之連結串列【上】資料結構
- 資料結構之連結串列操作資料結構
- JAVA資料結構之連結串列Java資料結構
- 資料結構之單連結串列資料結構
- 資料結構-單連結串列、雙連結串列資料結構
- 資料結構-連結串列資料結構
- 資料結構 - 連結串列資料結構
- 連結串列-資料結構資料結構
- 資料結構--連結串列資料結構
- 資料結構—連結串列資料結構
- leetcode 206.反轉連結串列LeetCode
- leetcode 206. 反轉連結串列LeetCode
- 資料結構實驗之連結串列三:連結串列的逆置資料結構
- 資料結構實驗之連結串列五:單連結串列的拆分資料結構
- 資料結構實驗之連結串列六:有序連結串列的建立資料結構
- 資料結構實驗之連結串列一:順序建立連結串列資料結構
- 資料結構之連結串列篇(單連結串列的常見操作)資料結構
- #反轉連結串列_C++版 #反轉連結串列_Java版 @FDDLCC++Java
- 程式碼隨想錄第3天 | 連結串列 203.移除連結串列元素,707.設計連結串列,206.反轉連結串列
- 資料結構之迴圈連結串列資料結構
- 資料結構之雙向連結串列資料結構
- 畫江湖之資料結構【第一話:連結串列】單向連結串列資料結構
- 畫江湖之資料結構【第一話:連結串列】雙向連結串列資料結構
- 畫江湖之資料結構 [第一話:連結串列] 單向連結串列資料結構
- 畫江湖之資料結構 [第一話:連結串列] 雙向連結串列資料結構
- 資料結構實驗之連結串列四:有序連結串列的歸併資料結構
- 資料結構和演算法——Go實現單連結串列並且反轉單連結串列資料結構演算法Go
- JavaScript資料結構--連結串列JavaScript資料結構
- 【LeetCode-連結串列】面試題-反轉連結串列LeetCode面試題