题解 | #链表中环的入口结点#
链表中环的入口结点
https://www.nowcoder.com/practice/253d2c59ec3e4bc68da16833f79a38e4
/* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } }; */ class Solution { public: ListNode* EntryNodeOfLoop(ListNode* pHead) { if (!pHead || !pHead->next) return nullptr; ListNode* slow = pHead; ListNode* fast = pHead; // 第一阶段:寻找快慢指针的相遇点 do { if (!fast || !fast->next) return nullptr; slow = slow->next; fast = fast->next->next; } while (slow != fast); // 第二阶段:寻找环的入口 slow = pHead; while (slow != fast) { slow = slow->next; fast = fast->next; } return slow; } };