判断链表中是否有环
首先假设有一个无限长的链表,其中slow指针指向链表的第N个结点(结点从0开始),fast指向第0个结点,那么此时fast与slow的距离为N-0=N。
![](https://img-blog.csdnimg.cn/9697e23aeeae454f8dbd7397d6031ea0.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAVGhlIFRlbXBsZQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
接下俩采取slow和fast分别采取一次一步和两步的策略移动,设k为移动次数,当k=1即一次移动后则slow与fast距离变为N+1-2=N-1
![](https://img-blog.csdnimg.cn/75946cd68edd4e258e2104bc5bde0208.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAVGhlIFRlbXBsZQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
继续移动,其总的距离变化:
首先假设有一个无限长的链表,其中slow指针指向链表的第N个结点(结点从0开始),fast指向第0个结点,那么此时fast与slow的距离为N-0=N。
接下俩采取slow和fast分别采取一次一步和两步的策略移动,设k为移动次数,当k=1即一次移动后则slow与fast距离变为N+1-2=N-1
继续移动,其总的距离变化: