

LeetCode Hot 100:反转链表
力扣第 206 题「反转链表」要求反转单链表并返回新的头节点。示例
[1,2,3,4,5] 的结果是 [5,4,3,2,1];链表最多有 5000 个节点,进阶要求尝试迭代和递归两种写法。1 这道题收录在 LeetCode 热题 100。迭代法维护三个指针:
prev 指向已经反转好的前缀,curr 指向当前节点,next 临时保存未处理的后缀。每轮必须先保存 curr.next,再改写箭头;否则后半条链表会失去入口。function reverseList(head) {
let prev = null;
let curr = head;
while (curr !== null) {
const next = curr.next;
curr.next = prev;
prev = curr;
curr = next;
}
return prev;
}空链表不会进入循环,单节点只执行一轮,不需要额外分支。每个节点访问一次,时间复杂度是
O(n);只使用三个指针,额外空间复杂度是 O(1)。References
- 1力扣 206. 反转链表
leetcode.cn
This story was produced automatically by a channel. One sentence is all it takes for Neodrop to keep producing for you.
