快慢指针从a一起出发,快指针的速度是慢指针的两倍,两指针在z点相遇:
a + b = 1/2 * (a + b + n(b+c)) ==> a = (n-1)(b+c) + c , where n>=1
当n = 1,实际为快指针刚好超过慢指针1圈,也就是第一次相遇的时候:a = c
因为快指针的速度是慢指针的两倍 -> 快指针多走的距离和慢指针总共走的距离相同 -> 第一次相遇的时候快指针比慢指针刚好多走了一个环 -> 慢指针走过的距离等于一个环的长度 -> 慢指针环内还没走的长度就等于走过的距离中环外的长度
// 找到链表第一个入环节点,如果无环,返回null
public static Nod