zoukankan      html  css  js  c++  java
  • 链表中有环相关证明

    1.判断时候有环(链表头指针为head)

    对于这个问题我们可以采用“快慢指针”的方法。就是有两个指针fast和slow,开始的时候两个指针都指向链表头head,然后在每一步

    操作中slow向前走一步即:slow = slow->next,而fast每一步向前两步即:fast = fast->next->next。

    由于fast要比slow移动的快,如果有环,fast一定会先进入环,而slow后进入环。当两个指针都进入环之后,经过一定步的操作之后

    二者一定能够在环上相遇,并且此时slow还没有绕环一圈,也就是说一定是在slow走完第一圈之前相遇。证明可以看下图:

     

    slow每次向前走一步,fast向前追了两步,因此每一步操作后fast到slow的距离缩短了1步,这样继续下去就会使得

    两者之间的距离逐渐缩小:...、5、4、3、2、1、0 -> 相遇。又因为在同一个环中fast和slow之间的距离不会大于换的长度,因此

    到二者相遇的时候slow一定还没有走完一周(或者正好走完以后,这种情况出现在开始的时候fast和slow都在环的入口处)。

     转载:https://www.cnblogs.com/dancingrain/p/3405197.html

  • 相关阅读:
    跨站请求伪造CSRF
    XSS危害——session劫持
    跨站脚本攻击XSS
    初识jsonp
    php json与xml序列化/反序列化
    php操作xml
    HTML5 WebStorage
    串口调试助手
    dashboard
    windows定时器编程
  • 原文地址:https://www.cnblogs.com/heyboom/p/10213779.html
Copyright © 2011-2022 走看看