环形链表
问题一:判断链表是否有环
📝题目指路:141. 环形链表 - 力扣(LeetCode) (leetcode-cn.com)
![在这里插入图片描述](https://img-blog.csdnimg.cn/4ec1c2f3217f45ad8b2e09e2d208c27f.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5Yeb6Z-zUmlubmU=,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
问题一思路分析
🎷首先题目已经给出了思路:
- 🎨如果链表中有某个节点,可以通过连续跟踪
next
指针再次到达,则链表中存在环
👞👞这就类似于追赶/追及
的问题,我们经常用到的是 快慢指针
👞👞
![在这里插入图片描述](https://img-blog.csdnimg.cn/3fb44d621ac64dd0aa0af60fde829eb8.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5Yeb6Z-zUmlubmU=,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
我们将上面的链表图转换为更为简单的直观图
![在这里插入图片描述](https://img-blog.csdnimg.cn/bf676ab8e2f54abba293561a90712e92.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5Yeb6Z-zUmlubmU=,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
- 🎯
fast
和slow
两个人赛跑
- 🎯fast先进入环
![在这里插入图片描述](https://img-blog.csdnimg.cn/b79d5b3de035408fb89049e65e48d25a.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5Yeb6Z-zUmlubmU=,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
-
🎯等到slow
开始进入环的时候,开始追及问题
![在这里插入图片描述](https://img-blog.csdnimg.cn/c7655c6037be4967bd2ce1c920f08702.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5Yeb6Z-zUmlubmU=,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
-
🎯假设 环的长度为C
-
🎯此时fast
和slow
相差C - X