本文主要是介绍环链表入口,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
快慢指针:一个每次前进一步,一个每次前进两步。
显然,若存在环结构,则两指针一定相遇,且快指针经过一圈后在换种某处与慢指针相遇。
此时,设置一个新的指针,从头节点开始出发,保持与慢指针相同的速度,最终相遇点即为环结构入口。
证明:假设s1-s2-s3-s4长度为a、b、c(s3为相遇点),
则slow走过的距离:a+b, fast走过的距离:a+b+(b+c)
根据快慢指针定义可得:2*(a+b) = a+b+(b+c)==>a=c
则此时只需要一个指针从头节点出发,保持与慢指针相同速度,最后相遇点即为环入口。
这篇关于环链表入口的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!