news 2026/4/22 23:32:42

算法训练营第七天 | 环形链表 扭捏快指针步步退,霸道慢指针狠狠追

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
算法训练营第七天 | 环形链表 扭捏快指针步步退,霸道慢指针狠狠追

今日算法题:142. 环形链表 II

编写代码前想法:

在刚看到题目的时候,我觉得题目重点是如何判断链表是否有环,我初步判断应该是利用while() 进行判断,但如果没有环,该利用什么条件来进行判断的退出,没有一个合适的判断条件,可能会造成无限循环;如果将判断环的循环限制在一定范围内,那么假设有一个长度非常大的环,循环没来得及判断完就到达限制点,岂不是会造成误判无环。

在视频教程学习后,我还明白了使用快慢指针判断链表是否有环的操作方法,并知晓了找到环的第一个节点才是重点,使用双指针找入口其代码实现也更复杂些。

代码编写如下:

总结:

本题核心解决两个问题:一为判断链表是否存在环;二为找到环的入口节点。

解题第一步:快慢指针判断环的存在:

分别定义快慢指针,均从链表头 head 出发,若链表有环,快指针一定会在环内追上慢指针。若快指针遇到 NULL,说明链表无环,直接返回 NULL。

解题第二步:寻找环的入口节点:

从链表头和相遇点同时出发,每次各走 1 步,两个指针一定会在环的入口节点相遇。

题目链接:https://leetcode.cn/problems/linked-list-cycle-ii/ 视频链接:https://www.bilibili.com/video/BV1if4y1d7ob

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/22 23:30:16

哈希表记录

啥是哈希表&#xff1f;我自己这么跟自己讲的&#xff0c;把目标物品们放入各自的不同箱子中记录了不同种箱子里的物品数量第一道题我写的代码&#xff08;一开始用的容器储存&#xff09;#include <string> using namespace std;class Solution { public:bool isAnagram…

作者头像 李华
网站建设 2026/4/22 23:29:16

如何在 Firebase Storage 中批量获取所有媒体文件的下载链接

本文详解 2023 年 firebase sdk v9 中正确列出并批量获取 storage 中所有媒体文件&#xff08;如图片&#xff09;下载 url 的标准方法&#xff0c;涵盖完整代码示例、常见错误分析及生产环境注意事项。 本文详解 2023 年 firebase sdk v9 中正确列出并批量获取 storage 中…

作者头像 李华