题解 | #链表中环的入口结点#
链表中环的入口结点
https://www.nowcoder.com/practice/253d2c59ec3e4bc68da16833f79a38e4
/* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } }; */ #include <unordered_map> #include <unordered_set> class Solution { public: ListNode* EntryNodeOfLoop(ListNode* pHead) { if (pHead == nullptr) { return nullptr; } std::unordered_set<ListNode *> hash_set; ListNode* tmp = pHead; while(tmp->next != nullptr ) { if (hash_set.count(tmp) > 0) { return tmp; } else { hash_set.insert(tmp); tmp = tmp->next; } } return nullptr; } };
这个题,
要么用快慢指针 , 要么用hash-set
用快慢指针(fast_ptr, slow_ptr)
slow_ptr在后面, faster_ptr在前面遍历,检查是否会存在 slow_ptr == fast_ptr, 如果相等,返回该ptr
note_coding 文章被收录于专栏
记录自己的解题思路, 欢迎评价