算法训练营第六天|142. 环形链表 II
一、今日学习的文章链接和视频链接
题目链接:https://leetcode.cn/problems/linked-list-cycle-ii/
视频链接:https://www.bilibili.com/video/BV1if4y1d7ob
二、自己看到题目的第一想法
看到题目需要找到环形链表的环入口,且不能修改链表、不能用额外空间,第一时间想到快慢双指针算法。先用快慢指针判断链表是否有环,再利用数学性质,在相遇后寻找环的入口节点,这是本题最优的原地解法。
三、自己实现过程中遇到哪些困难
- 不理解快慢指针相遇后,如何找到环入口,不清楚背后的数学推导逻辑;
- 循环条件写错,写成
slow!=fast导致死循环,或是fast判断条件不全造成空指针访问越界; - 第二步寻找入口时,指针起始位置和步长写错,无法正确定位入口节点。
四、代码实现与测试结果
代码实现
测试结果
五、今日收获心得
通过本题我彻底掌握了Floyd快慢指针判圈算法,理解了环形链表的数学性质。明白了快慢指针不仅能判断链表是否有环,还能精准找到环入口。同时深刻体会到算法数学推导的重要性,严谨的循环条件和指针逻辑是链表题的核心,也提升了我对链表双指针问题的解题思维。
