剑指offer—链表中环的入口结点

华电北风吹
天津大学认知计算与应用重点实验室
日期:2015/10/8

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

解析:链表中包含环的话,必有两个节点的next指针指向环的入口节点。我的思路是使用set.

/* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } }; */
class Solution {
public:
    ListNode* EntryNodeOfLoop(ListNode* pHead)
    {
        set<ListNode*> s;
        set<ListNode*>::iterator it;
        ListNode* p=pHead;
        while(p!=NULL)
        {
            it=s.find(p);
            if(it !=s.end())
                return p;
            else
                s.insert(p);
            p=p->next;
        }
        return NULL;
    }
};

你可能感兴趣的:(剑指offer—链表中环的入口结点)