编程语言
首页 > 编程语言> > 算法 判断单链表是否有环 快慢指针法

算法 判断单链表是否有环 快慢指针法

作者:互联网

class Solution {
public:
    bool hasCycle(ListNode *head) {
        ListNode* fast=head,* slow=head;
        while(fast&&fast->next)
        {
            fast=fast->next->next;
            slow=slow->next;
            if(fast==slow)
            {
                return true;
            }
        }
        return false;
    }
};

思路:准备两个指针fast和slow,循环链表,slow指针初始也指向head,每次循环向前走一步,fast指针初始指向head,每次循环向前两步,如果没有环,则快指针会抵达终点,如果有环,那么快指针会追上慢指针
复杂度:时间复杂度O(n),空间复杂度O(1)

标签:head,slow,复杂度,fast,next,单链,有环,指针
来源: https://www.cnblogs.com/liguohao/p/15809094.html