🧩Algo 链表
206. 反转链表
难度:🟢 Easy | 标签:链表 | 状态:⬜ LeetCode 链接
思路
迭代:prev / cur,每步先存 next,再让 cur->next = prev,再 prev/cur 前进。
递归:递归到尾,回溯时翻指针。
代码
class Solution {
public:
ListNode* reverseList(ListNode* head) {
ListNode *prev = nullptr, *cur = head;
while (cur) {
ListNode* nxt = cur->next;
cur->next = prev;
prev = cur;
cur = nxt;
}
return prev;
}
};
复杂度
- 时间 O(n),空间 O(1)(递归 O(n) 栈)
易错 / 回顾
- 先存 next 再断链,否则丢尾
- 最后返回
prev不是cur(cur 已是 nullptr) - 递归版要画图理解
head->next->next = head; head->next = nullptr
Related · 链表