分析

1、该题要获得是环是从第几个结点开始的(如果没有环一定会出现NULL),那如何找到这个入口点呢?
利用快慢指针的方法,两指针一定会相交于环内一点(类似于追击问题,一个人在操场以另一个人的2倍速跑,肯定会碰头),设两点碰头的点离环入口点dis(distance距离),设slow指针从head走了的长度为length,那么从头结点到环的开始的距离是length-dis,当slow指针花了length-dis到达环的入口,因为fast指针是slow的两倍,所以fast从碰头点到环入口点也是length-dis。
image.png
image.png

2、那要是没有环的情况如何解决呢?
一定要用fast指针来疯狂试探,因为fast指针走的快很多,因为它是可以为NULL的,所以只需要判断当前和下一个节点是否为空

代码