前后指针
文章平均质量分 53
flashlight_hi
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LeetCode 分类刷题:1669. 合并两个链表
本文探讨了合并两个链表的算法问题。题目要求在链表1中删除a到b位置的节点,并将链表2接入该位置。给出了两种解法:个人解法使用快慢指针分别定位;官方解法更高效,通过先定位再移动指针,避免了额外变量。时间复杂度应为O(n+m),官方解法更规范地以输入规模上限表述复杂度,体现了更优的编程实践。两种方法空间复杂度均为O(1)。该问题展示了链表操作中指针移动和边界处理的技巧,以及算法复杂度分析中规范表述的重要性。原创 2025-11-16 20:30:11 · 443 阅读 · 0 评论 -
LeetCode 分类刷题:2487. 从链表中移除节点
该算法通过反转链表来移除右侧存在更大值的节点。首先反转原始链表,然后遍历链表,若当前节点值大于下一节点值则删除下一节点,否则继续遍历。最后再次反转链表恢复原始顺序。这种方法确保了只保留右侧没有更大值的节点,时间复杂度O(n),空间复杂度O(1)。关键步骤包括两次链表反转和一次遍历筛选。原创 2025-11-15 18:24:54 · 468 阅读 · 0 评论 -
LeetCode 分类刷题:3217. 从链表中移除在数组中存在的节点
本文介绍了一种从链表中删除指定数值节点的高效算法。首先将目标数值存入哈希集合实现O(1)查询,然后通过添加哨兵节点简化删除操作。算法遍历链表,遇到集合中的节点值即删除,时间复杂度为O(n+m),空间复杂度O(n)。该方案通过哈希预处理和哨兵节点的巧妙运用,优化了链表的删除操作效率。原创 2025-11-14 17:02:33 · 380 阅读 · 0 评论 -
LeetCode 分类刷题:203. 移除链表元素
本文介绍了一种根据指定数值对链表节点进行删除的方法,通过创建虚拟头节点(dummy)处理边界情况,使用循环遍历链表并删除所有值等于给定val的节点。算法时间复杂度为O(n),空间复杂度为O(1),适用于处理链表元素删除问题。原创 2025-11-14 16:46:40 · 240 阅读 · 0 评论 -
LeetCode 分类刷题:82. 删除排序链表中的重复元素 II
文章介绍了如何从已排序链表中删除所有重复节点,只保留不同数字。通过创建哨兵节点处理可能删除头节点的情况,使用双指针遍历链表,当发现重复节点时循环删除所有相同值的节点;否则继续向后遍历。时间复杂度O(n),空间复杂度O(1)。原创 2025-11-13 16:03:19 · 141 阅读 · 0 评论 -
LeetCode 分类刷题:83. 删除排序链表中的重复元素
给定一个已排序链表,要求删除所有重复元素使每个元素只出现一次。解法是遍历链表,当发现当前节点与下一节点值相同时,将当前节点的next指针指向下下个节点来删除重复节点。该算法时间复杂度O(n),空间复杂度O(1)。原创 2025-11-13 15:47:28 · 250 阅读 · 0 评论 -
LeetCode 分类刷题:19. 删除链表的倒数第 N 个结点
本文介绍了一种高效删除链表倒数第n个节点的方法。引入哨兵节点,通过使用快慢指针技巧,首先让快指针移动n步,然后快慢指针同步移动直到快指针到达末尾,此时慢指针指向要删除节点的前驱节点(倒数第n+1个节点)。关键点是引入哨兵节点简化边界情况处理(如删除头节点的情况)。该方法时间复杂度O(m),空间复杂度O(1),其中m为链表长度,是一种最优解决方案。原创 2025-11-13 15:31:07 · 410 阅读 · 0 评论 -
LeetCode 分类刷题:237. 删除链表中的节点
摘要:题目要求在无法访问链表头节点的情况下删除指定节点。解决方法是将当前节点的值替换为下一个节点的值,然后删除下一个节点,这样就能保持链表结构不变但删除了目标节点。时间复杂度O(1),空间复杂度O(1)。核心操作:node.val = node.next.val; node.next = node.next.next。原创 2025-11-13 15:14:00 · 254 阅读 · 0 评论
分享