当前位置:   article > 正文

通俗易懂-对于快慢指针找到链表环入口的理解_快慢指针为什么可以找到入口

快慢指针为什么可以找到入口

*图1  链表环*图2 含环链表
图1是一个链表环,此链表有8个结点,分别为A-H。假设起点为G,快指针fast和慢指针slow都从G出发,慢指针一次遍历一个结点,快指针一次遍历两个结点,无论他们走多少圈,快慢指针fast和slow相遇的点总是G点,这个毋庸置疑,即slow和fast相遇的第一个结点为G点。
再看图2,将图1的G点到A点的结点扯平得到图2,那么同样的slow和fast还是从G点出发,按照图1的规则,slow和fast相遇的第一个点还是G点,因为当slow走到G’点的时候 fast已经走了两圈,第一圈是从G走到G’,第二圈是从G’到G’ ,这就是slow和fast指针相遇的全过程,此时应该很明了了,G’到A的节点数和G到A的节点数相同,因为从图1和图2的角度看,就相当于将图1的G点到A点扯平了,变成图2了,,,,
此时只需要两个slow指针,一个slow1从G点出发,一个slow2从G’点出发,slow1和slow2相遇的地方就是入口A点。。。。
是不是超级无敌很清晰明了简单 hhhh 代码的话网上应该有很多。。。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/895258
推荐阅读
相关标签
  

闽ICP备14008679号