background picture of the home page

19. 删除链表的倒数第 N 个结点

19. 删除链表的倒数第 N 个结点 19. 删除链表的倒数第 N 个结点 ✨核心逻辑 本题提供两种解决思路: 思路一:常规长度遍历法(两遍遍历) 虚拟头节点:为了方便统一处理(尤其是当删除头节点时),创建虚拟头节点 dummy 指向 head。 获取链表长度:首先遍历一遍原链表,计算出链表的总长度

thumbnail of the cover of the post

71. 简化路径

71. 简化路径 71. 简化路径 ✨核心逻辑 本题采用 栈(双端队列实现)与字符串分割 的策略: 路径分割:利用 Unix 路径以 / 为分隔符的特性,使用 split("/") 将路径字符串切割成若干个字符串组件。 栈结构维护:利用栈(或双端队列模拟栈)来维护路径层级。 遍历组件并处理: 遇到

thumbnail of the cover of the post

82. 删除排序链表中的重复元素 II

82. 删除排序链表中的重复元素 II 82. 删除排序链表中的重复元素 II ✨核心逻辑 由于给定的链表是已排序的,所以重复的元素必然在链表中连续相邻。题目要求删除所有重复数字的节点,只留下不同的数字。这里提供两种解题思路: 双指针法(快慢指针跳跃):利用快慢指针 slow 和 fast 遍历链表

thumbnail of the cover of the post

86. 分隔链表

86. 分隔链表 86. 分隔链表 ✨核心逻辑 本题采用 双哑链表(双虚拟头节点 + 尾指针) 的策略: 建立两个独立链表:创建两个虚拟头节点 small 和 large,分别用于存放原链表中值 小于 x 和 大于等于 x 的所有节点。 尾插法保持相对顺序:各自使用一个尾指针 smallTail 和

thumbnail of the cover of the post

61. 旋转链表

61. 旋转链表 61. 旋转链表 ✨核心逻辑 本题采用 闭环后断链(先成环,再切断) 的策略: 边界处理:如果链表为空,或者只有一个节点,直接返回原链表即可。 计算链表长度并闭环:先遍历整个链表,拿到链表的节点总数 length,同时让尾节点的 next 指向头节点 head,形成一个闭环。 取模

thumbnail of the cover of the post

92. 反转链表 II

92. 反转链表 II 92. 反转链表 II ✨核心逻辑 本题采用 虚拟头节点 + 头插法(局部反转) 的策略: 虚拟头节点(Dummy Node):因为 left 有可能等于 1(即从链表头开始反转),为了方便统一处理,我们创建一个虚拟头节点指向原 head。 定位前驱节点:通过循环,先让指针走

thumbnail of the cover of the post

21. 合并两个有序链表

21. 合并两个有序链表 21. 合并两个有序链表 ✨核心逻辑 本题采用 双指针(迭代) 的策略: 虚拟头节点(Dummy Node):为了方便处理结果链表为空的情况,以及简化头部节点的拼接操作,我们创建一个虚拟头节点 dummy。 双指针穿针引线:使用一个工作指针 curr 始终指向结果链表的最后

thumbnail of the cover of the post

2. 两数相加

2. 两数相加 2. 两数相加 ✨核心逻辑 本题采用 模拟数学加法(竖式运算) 的策略: 虚拟头节点:为了简化链表头节点的操作,我们创建一个虚拟头节点 dummy(代码中的 l3),它的 next 指针最终指向结果链表的第一个有效节点。 逐位相加:由于链表已经按照逆序存储数字(个位在头节点),我们可

thumbnail of the cover of the post

141. 环形链表

141. 环形链表 141. 环形链表 ✨核心逻辑 本题采用 快慢指针(龟兔赛跑) 的策略: 基础边界:如果链表为空或者只有一个节点,肯定没有环,直接返回 false。 双指针初始化:定义慢指针 s 指向头结点,快指针 f 指向头结点的下一个节点。快指针每次走两步,慢指针每次走一步。 追逐与相遇:

thumbnail of the cover of the post