题意:
对于一个给定的链表,返回环的入口节点,如果没有环,返回null。
方法:
集合
思路:初始化一个集合;
遍历链表的节点,并向集合中插入该节点。
如果发现集合中已经存在该节点,则说明是环的入口节点。(因为说明是绕了一个环,第二次访问该节点)
class Solution {
public:
ListNode *detectCycle(ListNode *head) {
unordered_set<ListNode*> st;//集合
ListNode *p=head;//初始化
while(p){
if(st.count(p)){//如果集合中存在该节点,则说明是环的入口节点
return p;
}else{//否则,插入节点
st.insert(p);
}
p=p->next;
}
return nullptr;//不存在环
}
};
时间复杂度:
空间复杂度:![]()



京公网安备 11010502036488号