反转链表
一、迭代
执行用时:96 ms, 在所有 JavaScript 提交中击败了33.93%的用户
内存消耗:39.7 MB, 在所有 JavaScript 提交中击败了50.02%的用户
var reverseList = function(head) { let prev= null, curr = head; while (curr) { let tmp = curr.next; // 1. 临时存储当前指针后续内容 curr.next = prev; // 2. 反转链表 prev = curr; // 3. 接收反转结果 curr = tmp; // 4. 接回临时存储的后续内容 } return prev; };
二、尾递归
执行用时:84 ms, 在所有 JavaScript 提交中击败了84.25%的用户
内存消耗:39.4 MB, 在所有 JavaScript 提交中击败了93.21%的用户
var reverseList = function(head) { return reverse(null, head); }; function reverse (prev, curr) { if (!curr) return prev; // [curr.next, prev, curr] = [prev, curr.next, curr.next]; let tmp = curr.next; curr.next = prev; return reverse(curr, tmp); }

浙公网安备 33010602011771号