zoukankan      html  css  js  c++  java
  • 【Algorithm | 链表】单链表“环”、“环的起点”、“环的长度”问题

    参考资料

    • Floyd判圈算法 { 链接 }

    • 单链表“环”、“环的起点”、环的长度”问题 { 链接 }

    链表环的问题

    一、判断链表有换

    使用两个指针slow和fast。两个指针开始时均在头节点处(SS点),slow指针(龟)一次向后移动一个一步,fast指针(兔)一次向后移动两步。若存在环,则slow和fast必能相遇;反之若slow到达链表尾时两个指针仍不能相遇,则不存在环。

    代码:链接

    如果我们把环从P点“切开”(当然并不是真的切,那就破坏原来的数据结构了),那么问题就转化为计算两个相交“单链表”的交点:一个单链表是从P点出发,到达P(一个回圈),距离M;另一个单链表从有环单链表的表头head出发,到达P,距离N。问题就变成了长度分别为M和N的两个链表求第一个相交的点,不妨设M>N,那么只需要让长度为M的链表先走M-N步,然后两个链表一起走,当停留在同一个点时,即是要求的点。

  • 相关阅读:
    安卓获取双IMEI
    NodeJS异步、同步 创建多层文件夹
    Winfrom 控件名称缩写
    Unobtrusive Ajax
    ID 为 17608的进程当前未运行
    欢迎
    路由
    VS快捷键
    Test
    并查集与带权并查集---由浅入深
  • 原文地址:https://www.cnblogs.com/sunbines/p/9233014.html
Copyright © 2011-2022 走看看