![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
力扣牛客经典题目专栏
文章平均质量分 84
讲解牛客或力扣上的一些经典问题
Yan. yan.好好学习
好好学习
展开
-
链表带环问题——判断链表中是否有环
这时就不再是慢指针在后,快指针在前了,我们可以将其看作是快指针在慢指针的后面追赶,而我们再让它们前进一段时间后,快指针会和慢指针走到同样的位置,因为这时候他们的速度差为 1个节点(前面讲到过慢指针走一个节点,而快指针走两个节点),故不论慢指针进入环时他们相距多少距离,都一定会相遇,而当 fast == slow 时,我们就可以判断这个链表时带环得了。如果题目没有标明,那我们又改怎么办呢?我们让快慢指针同时指向链表的头部,之后让快指针每次在链表中走两个节点的位置,而慢指针每次走一个节点的位置,同时进行。原创 2024-05-07 20:46:14 · 539 阅读 · 1 评论 -
【证明】快慢指针在带环链表中是否存在无法相遇的情形
在了解本次内容前,可以先了解一下带环链表中使用快慢指针来判断链表是否带环的内容。链表问题——找到环形链表入环节点而本文我们探究的问题是快慢指针在带环链表中是否存在无法相遇的情形,在此背景下,我们的快慢指针之间的速度比可以不再是快指针走两步,慢指针走一步,而是可以将他们定位任意的步数,只要快指针走的比慢指针快即可。本问探究的情况是当快指针依次走三步,慢指针一次走一步的情形,此情形的道德结论同样适用于其他速率比(例如 3:5,2:5)。PS.下述证明过程中的速率比均为实际步数比,原创 2024-05-09 21:40:46 · 653 阅读 · 0 评论 -
链表问题——找到环形链表入环节点
而在上面分析中 通过 fast 走过的路程 L + ( X + 1 ) * C + N = 2L + 2N,可以推算出 L = ( X + 1) * C - N,即 L = X * C + C - N,故当 point 从头节点出发,走过 L 后到达入环点,此时 slow 又从它与 fast 相遇的位置走了 X 圈环后,又走了 C - N的距离,即此时 slow 也刚好到达入环点,也就是此时 point 与 slow 相遇,此时的 point 就为入环点。slow 走过的路程为:L + N。原创 2024-05-07 21:09:48 · 481 阅读 · 0 评论