判断链表是否有环和环的大小及环的入口

1.判断链表是否有环

双指针法:定义两个指针,一个步长是2一个步长是1,当两个指针相遇时链表有环

2.计算链表环大小

设A的步长是1,B的步长是2。假设AB相遇A走了X步,那么B就走了2X步。假设是第一次相遇,则B多走的路就是环的大小。即X。

3.计算环的入口

设环的大小为x,交点到开始的距离为t,交点到入口距离为c(图中下面线段表示的距离),开始到入口距离为a(上图上面线段表示的距离),总长为u。图中环下面的点表示双指针交点位置。

则有 x(环大小)+a=u、t+c=u。因x=t得a=c。

定义两个指针,一个从头跑,另一个从交点跑,两个相遇的点就是入口。

猜你喜欢

转载自blog.csdn.net/qq_40279887/article/details/83578277