劍指 鏈表中環的入口結點

題目鏈接

牛客討論區的做法,perfect

 

/*
struct ListNode {
    int val;
    struct ListNode *next;
    ListNode(int x) :
        val(x), next(NULL) {
    }
};
*/
class Solution {
public:
    ListNode* EntryNodeOfLoop(ListNode* pHead)
    {
        if(pHead == NULL|| pHead->next == NULL || pHead->next->next == NULL)return NULL;
        ListNode* slow = pHead->next;
        ListNode* quick = pHead->next->next;
        
        while(slow != quick) {
            if(quick->next != NULL && quick->next->next != NULL) {
                quick = quick->next->next;
                slow = slow->next;
            }
            else return NULL;
        }
        ListNode* p = pHead;
        while(p != quick) {
            p = p->next;
            quick = quick->next;
        } 
        return p;
        
    }
};

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章