快慢指针
文章平均质量分 64
flashlight_hi
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LeetCode 分类刷题:2130. 链表最大孪生和
本文解决链表孪生和最大值问题。定义孪生节点为对称位置节点,孪生和为两节点值之和。解法采用三步:1)快慢指针找到链表中点;2)反转后半段链表;3)同时遍历前后半段计算孪生和,维护最大值。算法时间复杂度O(n),空间复杂度O(1),高效且节省空间。原创 2025-11-12 11:44:16 · 340 阅读 · 0 评论 -
LeetCode 分类刷题:234. 回文链表
判断链表是否为回文有两种方法。第一种是用数组存储节点值,比较数组前后半段是否对称(时间复杂度O(n),空间复杂度O(n))。第二种更优解法:1)使用快慢指针找到中间节点;2)反转后半段链表;3)同时遍历原链表前半段和反转后的后半段进行值比较(时间复杂度O(n),空间复杂度O(1))。若需保持原链表不变,可在比较后将后半段再次反转恢复。两种方法都能有效判断回文链表,第二种方法在空间效率上更优。原创 2025-11-11 11:48:39 · 507 阅读 · 0 评论 -
LeetCode 分类刷题:143. 重排链表
摘要:本文介绍了如何重新排列单链表,使其变为首尾交替连接的形式。解题思路分为三步:1)使用快慢指针找到链表中点;2)反转后半部分链表;3)将前半部分和反转后的后半部分交替合并。提供了两种实现方案,均采用O(n)时间复杂度和O(1)空间复杂度。关键点在于熟练运用快慢指针找中点、链表反转以及双指针合并两个链表的技术。原创 2025-11-10 21:29:45 · 379 阅读 · 0 评论 -
LeetCode 分类刷题:142. 环形链表 II
摘要:本文介绍如何检测链表中环的入口节点。使用快慢指针,快指针每次走两步,慢指针每次走一步,两者相遇时说明存在环。然后让慢指针和头节点同时移动,相遇点即为环入口。该方法时间复杂度O(n),空间复杂度O(1)。关键点在于推导出慢指针与头节点移动a步后会在环入口相遇的数学关系。原创 2025-11-10 21:06:07 · 352 阅读 · 0 评论 -
LeetCode 分类刷题:141. 环形链表
本文介绍如何判断链表是否有环。使用快慢指针法,快指针每次移动两步,慢指针移动一步。如果存在环,快指针最终会追上慢指针(相遇);若无环,快指针会先到达链表末尾。时间复杂度O(n),空间复杂度O(1)。解题代码采用JavaScript实现,通过比较指针是否相等来判断环的存在。原创 2025-11-10 20:41:37 · 595 阅读 · 0 评论 -
LeetCode 分类刷题:876. 链表的中间结点
本文介绍了一种高效查找链表中间节点的方法。使用快慢双指针遍历链表,慢指针每次移动1步,快指针每次移动2步。当快指针到达链表末尾时,慢指针正好位于中间位置(奇数节点)或第二个中间节点(偶数节点)。该方法时间复杂度为O(n),空间复杂度为O(1),是最优解法。原创 2025-11-10 20:23:44 · 193 阅读 · 0 评论
分享