题解 | #链表中环的入口结点#
链表中环的入口结点
http://www.nowcoder.com/practice/253d2c59ec3e4bc68da16833f79a38e4
按照双指针思路,定义快慢指针,fast = fast.next.next, slow = slow.next; 假设快慢指针从A点出发,在C点相遇;同时 假设B为环的入口节点,当slow走到B点时,fast走到D点。
在t1时刻,fast与slow相遇在C点,此时 slow走过A->B-C,fast走过A->B->C->D->B->C,由于fast速度是slow的2倍,则A->B->C->D->B-C为2倍的A->B-C,推理可知C->D->B—>C等于A->B->C(即C->D->B等于A->B);
所有在相遇点C处,slow继续沿C->D->B,同时fast从A出发采用slow相同速度沿A->B,两者同时到达B即为环的入口;
需要注意的时:1、链表中是否存在环的临界判断 2、在环存在的条件下,采用以上思路分析