AcWing 34. 鏈表中環的入口結點

習題地址 https://www.acwing.com/problem/content/description/86/算法

題目描述
給定一個鏈表,若其中包含環,則輸出環的入口節點。oop

若其中不包含環,則輸出null。spa

樣例code

給定的鏈表:
[1, 2, 3, 4, 5, 6]
2
注意,這裏的2表示編號是2的節點,節點編號從0開始。因此編號是2的節點就是val等於3的節點。

則輸出環的入口節點3.

算法1
除開各類技巧解答 本文采起比較中規中矩的解法
開啓一個SET記錄找到的節點 方便查找blog

而後遍歷鏈表進行比對 找到相同的節點就說明是環。沒有則返回NULLip

C++ 代碼get

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode *entryNodeOfLoop(ListNode *head) {
        set<ListNode*> ss;    
        ListNode* p = head;
        while(p != NULL){
            if(ss.count(p) != 0)
                return p;
            ss.insert(p);
            p = p->next;
        }

        return NULL;
    }
};


做者:defddr
連接:https://www.acwing.com/solution/acwing/content/2998/
來源:AcWing
著做權歸做者全部。商業轉載請聯繫做者得到受權,非商業轉載請註明出處。
相關文章
相關標籤/搜索