题目描述在这篇文章里:
https://blog.csdn.net/Kukeoo/article/details/114461881
本篇讨论遍历解法。
多一种解法,多一种思维。
一、思路
这个思路很容易理解,但是时间复杂度更大。
将每次遍历过的结点加入到一个unordered_map容器中。每次存放的时候判断当前节点是否存在,如果存在,说明有环,直接返回true。否则返回false。
二、代码
class Solution {
public:
bool hasCycle(ListNode *head) {
unordered_map<ListNode*, bool> m;
while (head) {
if (m.find(head) != m.end()) return true;
m[head] = true;
head = head->next;
}
return false;
}
};