LeetCode 19:删除链表的倒数第 N 个结点(双指针一趟扫描)ACERS 全解析
副标题 / 摘要 这题的核心不是“删除节点”,而是“如何在单链表里定位倒数第 N 个节点的前驱”。本文从朴素思路推导到一趟双指针解法,用 ACERS 结构讲透正确性、边界处理与工程迁移。 预计阅读时长:12~15 分钟 适用场景标签:链表基础、双指针、面试高频 SEO 关键词:LeetCode 19, Remove Nth Node From End of List, 删除链表倒数第 N 个结点, 快慢指针, 哨兵节点 元描述(Meta Description):删除链表倒数第 N 个结点的完整 ACERS 解析:从暴力到一趟双指针,含复杂度、常见坑、工程示例与 Python/C/C++/Go/Rust/JS 代码。 目标读者 刚开始刷链表题,想建立稳定解题模板的同学 知道快慢指针,但容易在边界条件上出错的开发者 希望把“题解能力”迁移到工程链式数据处理场景的后端/系统工程师 背景 / 动机 “删除倒数第 N 个节点”是链表题里的经典中档题,常见难点不在删除本身,而在: 单链表不能回退,无法直接从尾部向前数; 可能删除头节点,导致返回值处理复杂; 一旦 next 指针处理失误,容易断链或越界。 掌握它的价值在于: 你会形成一套可复用的“哨兵节点 + 双指针间距控制”模板,这对后续链表题(分组翻转、分割、合并)都很关键。 核心概念 单链表(Singly Linked List):每个节点只有 next 指针,只能向后遍历。 哨兵节点(dummy):在头结点前增加一个虚拟节点,统一“删除头节点”和“删除中间节点”的处理逻辑。 快慢指针固定间距:先让 fast 领先 slow 共 n 步,再同步前进;当 fast 到达末尾时,slow 正好停在目标节点前驱。 A — Algorithm(题目与算法) 题目重述 给你一个链表,删除链表的倒数第 n 个结点,并返回链表的头结点。 ...