题目描述

一个链表中包含环,请找出该链表的环的入口结点。

【思路】根据set集合的不重复,遍历链表时遇到的第一个重复结点就是环的入口结点。

 /*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};
*/
class Solution {
public:
ListNode* EntryNodeOfLoop(ListNode* pHead)
{
if(pHead == NULL)
return NULL;
set<ListNode*> Set;
while(pHead){
if(!Set.insert(pHead).second)
return pHead;
pHead = pHead->next;
}
return NULL;
}
};
05-11 13:38