LeetCode206
- 添加虚拟头结点
var reverseList = function(head) {
if(!head?.next) return head;
let p = head;
let dummyHead = new ListNode();
while(p) {
let node = new ListNode();
node.val = p.val;
node.next = dummyHead.next;
dummyHead.next = node;
p = p.next;
}
return dummyHead.next;
};
- 不添加虚拟头结点
var reverseList = function(head) {
if(!head?.next) return head;
let cur = head;
let pre = null;
while(cur) {
let node = cur.next;
cur.next = pre;
pre = cur;
cur = node;
}
return pre;
};
- 递归,直接修改原链表
var reverseList = function(head) {
if(!head?.next) return head;
let newHead = reverseList(head.next);
head.next.next = head;
head.next = null;
return newHead;
};