🧩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 · 链表