- 慢指针一次走一步,快指针一次走两步,如果有换的话一定会在慢指针第一次走圈的时候相遇,此时相遇点到环入口的距离和链表头到相遇点的距离相等,让快慢指针一起走,再次相遇就是入口
if(pHead==null)
{
return pHead;
}
ListNode low = pHead,high = pHead;
while(high!=null&&high.next!=null)
{
low = low.next;
high = high.next.next;
if(low==high)
{
break;
}
}
if(null==high||high.next==null)
{
return null;
}
low = pHead;
while(low!=high)
{
low = low.next;
high = high.next;
}
return low;