Java教程

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

本文主要是介绍算法 判断单链表是否有环 快慢指针法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
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)

这篇关于算法 判断单链表是否有环 快慢指针法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!