習題地址 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 著做權歸做者全部。商業轉載請聯繫做者得到受權,非商業轉載請註明出處。