力扣 |142. 环形链表 II

在这里插入图片描述

用快慢指针的方法
在这里插入图片描述
在这里插入图片描述
根据推出的表达式:slow和fast相遇的时候,让slow和位于头节点的p同时
向前走,刚好在入环的节点处相遇!注意:b和c交界的点不一定是从例如-4这个节点处,
可能是0节点处。因为相遇的点只能是在2、0、-4这几个点,c的长度并不一定是一个next就可以
到达入环口的长度!
重点是理解a b c的关系!

在这里插入图片描述

 public ListNode detectCycle1(ListNode head) {
        Set<ListNode> visited = new HashSet<>();
        while (head != null) {
            if (visited.contains(head)) return head;
            visited.add(head);
            head = head.next;
        }
        return null;
    }

    public ListNode detectCycle(ListNode head) {
        ListNode slow = head;
        ListNode fast = head;
        while (fast != null && fast.next != null) {
            slow = slow.next;
            fast = fast.next.next;
            if (slow == fast) {
                ListNode p = head;
                while (p != slow) {
                    p = p.next;
                    slow = slow.next;
                }
                return p;
            }
        }
        return null;
    }

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-04-14 02:22:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-14 02:22:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-14 02:22:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-14 02:22:02       18 阅读

热门阅读

  1. 爬虫ip被限制了怎么解决

    2024-04-14 02:22:02       13 阅读
  2. MVC设计模式的思想

    2024-04-14 02:22:02       14 阅读
  3. Unity3D 立方体纹理与自制天空盒详解

    2024-04-14 02:22:02       15 阅读
  4. Go语言中工作负载类型对并发的影响

    2024-04-14 02:22:02       13 阅读
  5. 分库分表-简单了解

    2024-04-14 02:22:02       12 阅读
  6. 电子邮件协议学习

    2024-04-14 02:22:02       11 阅读
  7. Unity DOTS1.0 入门(1) ECS机制与概述

    2024-04-14 02:22:02       16 阅读
  8. 网络工程师练习题(13)

    2024-04-14 02:22:02       13 阅读
  9. Redis GEO实现附近的人功能

    2024-04-14 02:22:02       16 阅读
  10. MySQL基础练习题:习题31-End

    2024-04-14 02:22:02       13 阅读
  11. 服务器停用,备份服务文件。

    2024-04-14 02:22:02       10 阅读
  12. Gitea的简单介绍

    2024-04-14 02:22:02       13 阅读