题目描述
一个链表中包含环,请找出该链表的环的入口结点。
【思路】根据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;
}
};