美文网首页
如何判断一个单链表是否有环

如何判断一个单链表是否有环

作者: 淡淡de盐 | 来源:发表于2020-08-30 18:39 被阅读0次

用一个简单的办法去解决:快慢指针

如果有环有下面2种情况:

图1 图2

图1 快慢指针过程

fast->2->4->6->3->5
slow->1->2->3->4->5

变成代码

function isCheckRings($head)
{
    $fast = $head;
    $slow = $head;

    while ($fast !== null && $fast->next !== null) {
        $fast = $fast->next->next;
        $slow = $slow->next;
        if ($fast === $slow) {
            return true;
        }
    }
    return false;
}

查找环入口

先判断单链表是否有环,让快指针变成每次走一步,当快慢指针在次相遇,也就是环入口了。

变成代码

function findRings($head)
{
    $fast = $head;
    $slow = $head;

    // 先判断是否有环
    while ($fast != null && $fast->next !== null) {
        $fast = $fast->next->next;
        $slow = $slow->next;
        if ($fast === $slow) {
            break;
        }
    }
    if ($fast === null || $fast->next === null) {
        return false;
    }

    $fast = $head;
    while ($fast !== $slow) {
        $fast = $fast->next;
        $slow = $slow->next;
    }
    return $fast->data;
}

相关文章

  • 检测链表有环

    题目:如何判断一个单链表是否有环?若有环,如何找出环的入口节点。 一、单链表是否有环 思路分析: 单链表有环,是指...

  • 2022-02-27环形链表linked-list-cycle

    1.判断单链表是否有环 给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续...

  • 链表

    现在有一个单向链表,谈一谈,如何判断链表中是否出现了环 考察点:链表参考回答:单链表有环,是指单链表中某个节点的n...

  • 判断单链表是否有环、求环长和环入口最优算法

    判断单链表是否有环、求环长和环入口最优算法 判断单链表是否有环是一个十分经典的算法问题,许多考试或者面试都有很大的...

  • 单链表中存在环的相关问题Java实现

    问题描述 判断一个单链表是否有环? 如果存在环,如何得到环中节点的数目? 如果存在环,如何找到环的入口? 解题思路...

  • 判断一个单链表是否存在环

    问题:如题,判断一个单链表是否存在环 分析:判断一个单链表是否存在环,问题情况分为如下 [x] 首尾相连 [x] ...

  • 如何判断单链表是否存在环

    给定一个单链表,只给出头指针h: 如何判断是否存在环? 如何知道环的长度? 如何找出环的连接点在哪里? 带环链表的...

  • 快慢指针的应用

    什么是快慢指针:快慢指针是链表操作中的常用操作,最经典的应用是判断单链表中是否有环。 判断单链表是否存在环 两个指...

  • 链表判环

    如何判断一个单链表是否有环?有环的话返回进入环的第一个节点的地址,无环的话返回空。如果链表的长度为N,请做到时间复...

  • 5_12链表判环

    如何判断一个单链表是否有环?有环的话返回进入环的第一个节点的值,无环的话返回-1。如果链表的长度为N,请做到时间复...

网友评论

      本文标题:如何判断一个单链表是否有环

      本文链接:https://www.haomeiwen.com/subject/jibajktx.html