题解 | 链表中环的入口结点
链表中环的入口结点
https://www.nowcoder.com/practice/253d2c59ec3e4bc68da16833f79a38e4
/* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } }; */ #include <unordered_map> class Solution { public: bool hasCycle(ListNode* head) { if (head == nullptr) return false; ListNode* fast = head; ListNode* slow = head; while (fast->next && fast) { if (fast->next) slow = slow->next; fast = fast->next->next; if (fast == slow) return true; } return false; } ListNode* EntryNodeOfLoop(ListNode* pHead) { if(!hasCycle(pHead)) return nullptr; unordered_map<ListNode*, int> mp; while(1) { mp[pHead]++; pHead=pHead->next; for(auto& pair:mp) { if(pair.second==2) return pair.first; } } } };