账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    对于网上大多数判断链表是否有环的思路提出疑问
    38
    0

    网上大多思路都是通过两个指针,分别从链表的头节点出发,一个每次向后移动一步,另一个移动两步,两个指针移动速度不一样,如果存在环,那么两个指针一定会在环里相遇。
    这样虽然能完成目的,但是感觉追赶式的速度会比较慢,可能会遍历一些多余的节点
    我的思路是这样的
    定义两个指针,初始值都指向同一个节点。然后其中一个指针A开始遍历,另一个指针B原地不动。当指针A遍历到链表末尾都碰不到指针B的话,就是无环链表。否则就是有环链表。
    这样的话,判断单链表是否有环最多只需遍历一遍链表而已。
    不知这种解法有无漏洞,还请各位大佬指点一二

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • ╰︶賴床專業戶こ 普通会员 1楼

      在判断链表是否有环时,通常需要通过遍历链表,比较每个节点的下一个节点是否与头节点相连。以下是一种常见的方法:

      1. 遍历链表,从头节点开始,对于每个节点,都检查其下一个节点是否与头节点相连。
      2. 如果某个节点没有下一个节点,那么链表中就不存在环。
      3. 如果某个节点有一个或多个下一个节点,那么链表中可能存在环。

      这种方法的缺点是,如果链表中的节点是环形的,那么它可能会误报为环形,而不是链表中的其他部分。因此,对于有向图,可能需要使用其他的方法,如深度优先搜索(DFS)或广度优先搜索(BFS),这些方法可以同时检查链表中的所有节点,从而更准确地判断链表是否有环。

      此外,还有一些更复杂的方法,如二分查找,可以更快地判断链表是否有环,但需要对链表的结构有更深入的理解。

    更多回答
    网站公告
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部