题目描述
一个链表中包含环,请找出该链表的环的入口结点。
【思路】根据set集合的不重复,遍历链表时遇到的第一个重复结点就是环的入口结点。
1 /* 2 struct ListNode { 3 int val; 4 struct ListNode *next; 5 ListNode(int x) : 6 val(x), next(NULL) { 7 } 8 }; 9 */ 10 class Solution { 11 public: 12 ListNode* EntryNodeOfLoop(ListNode* pHead) 13 { 14 if(pHead == NULL) 15 return NULL; 16 set<ListNode*> Set; 17 while(pHead){ 18 if(!Set.insert(pHead).second) 19 return pHead; 20 pHead = pHead->next; 21 } 22 return NULL; 23 } 24 };