题目描述:
给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。
本题知识点:
链表
解题思路:
如果链表中有环,那么从头开始便利链表,最终总会回到链表的入口结点处。使用哈希表存储每个经过的结点,如果遇到之前出现过的结点,就说明到达环的入口。
代码:
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};
*/
class Solution {
public:
ListNode* EntryNodeOfLoop(ListNode* pHead)
{
if(!pHead)
return NULL;
unordered_map<ListNode*, int> unmap;
while(pHead)
{
if(unmap.find(pHead) == unmap.end())
unmap.insert({pHead, 1});
else
return pHead;
pHead = pHead->next;
}
return NULL;
}
};