206. Reverse Linked List
Leetcode
題目
Input: head = [1,2,3,4,5]
Output: [5,4,3,2,1]Input: head = [1,2]
Output: [2,1]Input: head = []
Output: []解答
Init
First round
Second round
Third round
Last updated
Input: head = [1,2,3,4,5]
Output: [5,4,3,2,1]Input: head = [1,2]
Output: [2,1]Input: head = []
Output: []Last updated
var reverseList = function(head) {
let pointer = head;
let before = null;
let last = null;
while(pointer !== null) {
last = before;
before = pointer;
pointer = pointer.next;
before.next = last;
}
return before;
};prev = null
next = null// 先保存下個節點
next = head.next // next = 2
// head 指向前一個節點
head.next = prev // 1 -> null
// 將 prev 移到目前節點
prev = head // prev = 1
// 將 head 移到下個節點
head = next // head = 2// 先保存下個節點
next = head.next // next = null
// head 指向前一個節點
head.next = prev // 2 -> 1
// 將 prev 移到目前節點
prev = head // prev = 2
// 將 head 移到下個節點
head = next // head = nullprev = 2 -> 1 -> nullvar reverseList = function (head) {
let prev = null;
let next = null;
while (head) {
next = head.next;
head.next = prev;
prev = head;
head = next;
}
return prev;
};var reverseList = function (head, prev = null, next = null) {
if (head) {
next = head.next;
head.next = prev;
prev = head;
head = next;
return reverseList(head, prev, next);
}
return prev;
};