题目链接
先计算出环长,第一次相遇后起点相同并且在环里,再次相遇时在还在第一次相遇的结点,所以第一次相遇到第二次相遇的步数就是环长。
再重置快慢指针,快指针比慢指针快环长个,再次相遇时就在环的入口,因为快环长个结点,到入口时快指针也回到入口
public ListNode detectCycle(ListNode head) {
if (head == null || head.next == null) return null;
ListNode q = head.next;
ListNode p = head;
int cnt = 0,len =0