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

链表中环的入口结点

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#
全部评论

相关推荐

影04714:把图书管理系统那个项目经验内容适当的减少掉,然后改成据为己有不要说团队项目,因为图书管理系统这类常见的谁来了都能独立写出来,提问能圆过来即可
点赞 评论 收藏
分享
小浪_Coding:1. 项目,纯测试的项目不要往简历上写, 外卖项目需要包装一下,加点自己的产出,和测试关联的 2. 个人技能写的浅且不全, 需要展开细写, 同时需要补充额外的技术栈. 3. 项目可以换i自动化/CI CD的项目, 整体排版需要优化.
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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