日野弥生:勉強しよう

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;
    }
};

フラッシュタブ:LeetCode

题目链接:https://leetcode.cn/problems/linked-list-cycle/

上一篇

LeetCode 707 - 设计链表

下一篇

LeetCode 142 - 环形链表 II