题解 | #链表中环的入口结点#
链表中环的入口结点
http://www.nowcoder.com/practice/253d2c59ec3e4bc68da16833f79a38e4
class Solution { public: ListNode* EntryNodeOfLoop(ListNode* pHead) { ListNode *slow = pHead, *fast = pHead; // 快慢指针,找到快慢指针第一次相遇的点 while (fast && fast->next) { slow = slow->next; fast = fast->next->next; if (slow == fast) break; } // 若遇到空节点,则可以确定为无环 if (!fast || !fast->next) return nullptr; // 一个针指从头结点开始,另一个从相遇点开始,都以每次一个结点的速度跑,再次相遇的时候就是入口 slow = pHead; while (slow != fast) { slow = slow->next; fast = fast->next; } return slow; } };