1、给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。
说明:不允许修改给定的链表
输入:head = [3,2,0,-4]
输出:返回索引为 1 的链表节点
解释:链表中有一个环,其尾部连接到第二个节点。
解题思路:
1、使用快慢指针,先判断是否有环
快指针每一次走两步,慢指针一次走一步。
如果链表存在环,那么快指针与慢指针一定会在环中某个位置相遇。
2、若存在环,此时慢指针
相遇时,fast 指针已经走完了环的 n 圈,因此它走过的总距离为 a+n(b+c)+b=a+(n+1)b+nc。
而slow指针走的距离为 a +b。
同时由 fast = 2*slow