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 代码。 A — Algorithm(题目与算法) 题目重述 给你一个链表,删除链表的倒数第 n 个结点,并返回链表的头结点。 输入输出 项目 类型 含义 head ListNode 单链表头结点 n int 倒数第 n 个位置 返回值 ListNode 删除目标节点后的头结点 示例 1 输入: head = [1,2,3,4,5], n = 2 输出: [1,2,3,5] 解释:倒数第 2 个节点是 4,删除后得到 [1,2,3,5]。 ...

2026年2月11日 · 11 分钟 · map[name:Jeanphilo]

Hot100:排序链表(Sort List)链表归并排序 ACERS 解析

副标题 / 摘要 LeetCode 148 的核心不是“会排序”,而是“在链表结构里选对排序算法”。数组可随机访问适合快排/堆排,而单链表最匹配的是归并排序:找中点、递归分治、线性归并。 预计阅读时长:12~16 分钟 标签:Hot100、链表、归并排序、分治 SEO 关键词:Sort List, 排序链表, 链表归并排序, LeetCode 148, Hot100 元描述:用链表归并排序在 O(n log n) 内完成排序,覆盖思路推导、工程迁移、复杂度分析和多语言可运行实现。 A — Algorithm(题目与算法) 题目还原 给你链表头节点 head,请将其按升序排序并返回排序后的链表。 要求时间复杂度为 O(n log n)。 输入输出 名称 类型 描述 head ListNode 单链表头节点(可能为空) 返回 ListNode 升序排序后的头节点 示例 1 输入: 4 -> 2 -> 1 -> 3 输出: 1 -> 2 -> 3 -> 4 示例 2 输入: -1 -> 5 -> 3 -> 4 -> 0 输出: -1 -> 0 -> 3 -> 4 -> 5 目标读者 正在刷 Hot100,想把链表题模板系统化的同学 做链表题经常在“切分和拼接”环节出错的开发者 想搞清楚“为什么链表排序优先用归并”而不是快排的人 背景 / 动机 链表排序在工程里并不罕见: ...

2026年2月10日 · 8 分钟 · map[name:Jeanphilo]

Hot100:环形链表 II(Linked List Cycle II)Floyd 判环 + 定位入环点 ACERS 解析

副标题 / 摘要 这题的价值在于把“判环”升级为“定位入环点”。最稳的工程化模板是 Floyd:先用快慢指针在环内相遇,再让一个指针回到头结点同步走,下一次相遇的位置就是入环点。全程不修改链表,O(n) 时间、O(1) 额外空间。 预计阅读时长:12~16 分钟 标签:Hot100、链表、快慢指针、Floyd SEO 关键词:环形链表 II, 入环点, Floyd 判圈, 快慢指针, O(1) 空间, LeetCode 142 元描述:Floyd 快慢指针判环并定位入环点:相遇后从头与相遇点同步前进,返回入环的第一个节点;O(n)/O(1),不允许修改链表。 A — Algorithm(题目与算法) 题目还原 给定链表头节点 head,返回链表开始入环的第一个节点;如果链表无环,返回 null。 说明: 评测用 pos 表示尾节点连接到链表中的位置(0-based),pos=-1 表示无环 pos 不会作为参数传入,只用于描述测试构造 不允许修改链表 输入输出 名称 类型 描述 head ListNode 单链表头结点 返回 ListNode / null 入环点节点引用,或 null 示例 1(有环,入环点在值为 2 的节点) head = 3 -> 2 -> 0 -> -4 ^ | |_____| 输出: 节点(2) (返回节点引用/地址,不是索引或数值) 示例 2(无环) head = 1 -> 2 -> 3 输出: null 目标读者 刷 Hot100,想把“判环/入环点定位”模板一次性吃透的学习者 需要写健壮链式结构遍历(避免死循环)并能定位故障节点的工程师 面试里被问到“为什么 reset 之后会在入环点相遇”的同学 背景 / 动机 链表一旦出现环,任何“遍历到 null 为止”的代码都可能进入死循环。 工程里造成环的原因很多:指针写错、复用节点、数据结构被破坏、并发读写导致 next 异常等。 因此除了“有没有环”,更重要的是: ...

2026年2月1日 · 8 分钟 · map[name:Jeanphilo]

Hot100:环形链表(Linked List Cycle)Floyd 快慢指针 ACERS 解析

副标题 / 摘要 判断链表是否有环,本质是“指针追及问题”。本文用 ACERS 结构讲透 Floyd 快慢指针判环:为什么一定能相遇、如何避免空指针、以及在工程里如何用同一思想识别循环引用/路由环路。 预计阅读时长:10~12 分钟 标签:Hot100、链表、快慢指针 SEO 关键词:Hot100, Linked List Cycle, 环形链表, 判环, Floyd, 快慢指针, LeetCode 141 元描述:Floyd 快慢指针 O(n)/O(1) 判断单链表是否有环,附替代方案对比、易错点与多语言实现。 A — Algorithm(题目与算法) 题目还原 给你一个链表的头节点 head,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 注意:pos 不作为参数进行传递,它只是用于标识链表的实际情况。 若存在环返回 true,否则返回 false。 输入输出 名称 类型 描述 head ListNode 单链表头节点(可能为空) 返回 bool 是否存在环 示例 1(自拟) head: 3 -> 2 -> 0 -> -4 ^ | |_____| 输出: true 示例 2(自拟) head: 1 -> 2 -> null 输出: false 目标读者 正在刷 Hot100 / 准备面试的同学 想把“链表双指针”沉淀成稳定模板的中级开发者 在工程里需要识别循环引用、链式结构异常的同学(C/C++/Go/Rust/JS 皆适用) 背景 / 动机 链表出现环在工程里并不罕见: 例如手写内存池的 free list、对象引用链、状态机/任务编排的 next 指针、配置链路的“下一跳”等。 ...

2026年2月1日 · 8 分钟 · map[name:Jeanphilo]

Hot100:回文链表(Palindrome Linked List)快慢指针 + 反转后半段 O(1) 空间 ACERS 解析

副标题 / 摘要 回文链表的核心是“对称比较”,但单链表不能从尾部往前走。最稳的工程化解法是:快慢指针找中点 -> 原地反转后半段 -> 比较 -> 再反转恢复结构,做到 O(n) 时间、O(1) 额外空间且不破坏链表。 预计阅读时长:10~14 分钟 标签:Hot100、链表、快慢指针、原地反转 SEO 关键词:回文链表, Palindrome Linked List, O(1) 空间, 快慢指针, 反转后半段, LeetCode 234 元描述:快慢指针定位中点,反转后半段与前半段逐一比较,最后恢复链表结构;O(n)/O(1) 判断单链表是否回文。 A — Algorithm(题目与算法) 题目还原 给你一个单链表的头节点 head,请你判断该链表是否为回文链表: 如果是回文,返回 true;否则返回 false。 输入输出 名称 类型 描述 head ListNode 单链表头结点 返回 bool 是否为回文 示例 1 输入: 1 -> 2 -> 2 -> 1 输出: true 示例 2 输入: 1 -> 2 输出: false 目标读者 刷 Hot100,想掌握“链表中点 + 原地反转”组合拳的学习者 面试中经常遇到“回文/对称/镜像”类题的开发者 关注空间效率、且需要保证数据结构不被破坏的工程实践者 背景 / 动机 在数组里判断回文很简单:左右指针向中间收缩即可。 但在单链表里,你只能顺着 next 单向走,无法从尾部回看,这就让“对称比较”变得不那么直接。 ...

2026年2月1日 · 11 分钟 · map[name:Jeanphilo]