码迷,mamicode.com
首页 > 其他好文 > 详细

23. 链表中环的入口结点

时间:2021-03-29 12:41:24      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:int   mamicode   png   链表   loop   http   odi   lan   nod   

https://www.nowcoder.com/practice/253d2c59ec3e4bc68da16833f79a38e4?tpId=13&tqId=11208&tPage=1&rp=1&ru=%2Fta%2Fcoding-interviews&qru=%2Fta%2Fcoding-interviews%2Fquestion-ranking&from=cyc_github&tab=answerKey
技术图片
假设t时刻相遇
t = a+b
2t = a+n(b+c)+b
a = (n-1)(b+c)+c
slow跑(n-1)(b+c)+c
ans从pHead开始跑a
此时两者一定相遇在入口点

/*
struct ListNode {
    int val;
    struct ListNode *next;
    ListNode(int x) :
        val(x), next(NULL) {
    }
};
*/
class Solution {
public:
    ListNode* EntryNodeOfLoop(ListNode* pHead) {
        auto fast = pHead;
        auto slow = pHead;
        while(fast){
            slow = slow->next;
            if(fast->next != nullptr){
                fast = fast->next->next;
            }else{
                return nullptr;
            }
            //有环,开始确定入口点
            if(slow == fast){
                auto ans = pHead;
                while(ans != slow){
                    ans = ans->next;
                    slow = slow->next;
                }
                return ans;
            }
        }
        return nullptr;
    }
};

23. 链表中环的入口结点

标签:int   mamicode   png   链表   loop   http   odi   lan   nod   

原文地址:https://www.cnblogs.com/N3ptuner/p/14587136.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!