给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。
个人思路:链表中的环也就是出现次数超过1次的节点;std::map 可以很好的实现计数功能。踩一个坑,map模板的第一个参数,传入指针比传入结构体要好,且不需要去重载map的相关操作(如果传入结构体)。
ListNode* EntryNodeOfLoop(ListNode* pHead)
{
map<ListNode*,int> mp;
while(pHead)
{
mp[pHead]++;
if(mp[pHead] >= 2)
{
return pHead;
}
pHead = pHead -> next;
}
return NULL;
}