首页 > 编程语言 > 详细

龟兔算法:判断链表是否有环、确定环的入口

时间:2019-05-02 20:37:35      阅读:157      评论:0      收藏:0      [点我收藏+]

1.使用快慢指针,fast=fast.next.nextslow=slow.next,若链表存在环,那么fastslow一定会相遇,相遇的节点在环内,接下来需要确定环的入口。

2.如图,假设L链表总长 - 环的长度cxslow走过的长度 - L,指针在圆点相遇,slow走了L+xfast走了L+kc+x(k为正整数),快指针是慢指针的2倍,则 L=kc - x。让快指针回到链表头部,slow在相遇的位置,两指针同时开始移动,每次移动一步,那么当fast到达环的入口时,slow走过的距离为kc - x,也就是在相遇点绕环k次,回到环的入口,所以,指针必定在环的入口处相遇

技术分享图片

 

龟兔算法:判断链表是否有环、确定环的入口

原文:https://www.cnblogs.com/sugar19/p/10803191.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!