日野弥生:勉強しよう
LeetCode 141 - 环形链表
发表于2025年01月13日
每次移动慢指针一步,而移动快指针两步。每一次迭代,快速指针将额外移动一步。如果环的长度为 M,经过 M 次迭代后,快指针肯定会多绕环一周,并赶上慢指针。 需要对指针进行判空检查。 注意:没环的情况下,快指针一次走两步可能会走超出链表长度,此时的快结点为空指针,对空指针进行取值操作会崩溃。
class Solution {
public:
bool hasCycle(ListNode *head) {
if(!head)
return false;
ListNode* slow=head,*fast=head;
while(fast && fast->next)
{
slow=slow->next;
fast=fast->next->next;
if(fast==slow)
return true;
}
return false;
}
};