// 定义一个 Solution 类
class Solution {
public:
// 定义一个成员函数,返回类型为 ListNode*
ListNode *detectCycle(ListNode *head) {
// 声明一个无序集合,用于存储链表节点
unordered_set<ListNode*> unset;
// 定义一个指向头结点的指针
ListNode* cur = head;
// 当当前指针不为空时,执行以下循环体
while (cur) {
// 如果集合中已经存在当前节点,则说明链表有环,返回当前节点
if (unset.count(cur) > 0) {
return cur;
}
// 否则将当前节点加入集合
unset.insert(cur);
// 将当前指针指向下一个节点
cur = cur->next;
}
// 如果链表没有环,则返回空指针
return nullptr;
}
};