题解 | #链表中环的入口结点#

链表中环的入口结点

https://www.nowcoder.com/practice/253d2c59ec3e4bc68da16833f79a38e4

/*
struct ListNode {
    int val;
    struct ListNode *next;
    ListNode(int x) :
        val(x), next(NULL) {
    }
};
*/
class Solution {
public:
    ListNode* MeetNode(ListNode* pHead)
    {
        if(pHead==nullptr)
            return nullptr;
        
        ListNode* pSlow=pHead;
        ListNode* pFast=pHead;

        while(pFast!=nullptr&&pFast->next!=nullptr)
        {
            pFast=pFast->next->next;
            pSlow=pSlow->next;

            if(pSlow==pFast)
                return pFast;
        }
        return nullptr;
    }
    ListNode* EntryNodeOfLoop(ListNode* pHead) 
    {

        ListNode* meetNode=MeetNode(pHead);

        if(meetNode==nullptr)
            return nullptr;

        ListNode* pNode1=pHead;
        ListNode* pNode2=meetNode;

        while (pNode1!=pNode2) 
        {
            pNode1=pNode1->next;
            pNode2=pNode2->next;
        }
        return pNode1;
    }
};

1.注意快指针比慢指针快一倍

2.注意相遇点为nullptr需要处理下

在相遇点和头节点处,一定是可以进行相遇的

#剑指OFFER#
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-29 14:02
点赞 评论 收藏
分享
DKS233:项目写太简单了,你用什么技术实现了什么功能,优化了多少,分了哪些模块,解决了哪些难点,最好分模块写,你写的太模糊了。精通还是少用吧,你确定问你底层你扛的住吗,最好用熟悉。具备良好**意识,这种空话不要写,技能层面,要写就写实在的,比如“熟悉常用数据结构,如,堆,栈,链表,哈希表,平衡树”这种
你的简历改到第几版了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务