每日算法
(iostream)
小白
展开
-
链表中环的入口结点
(k>=1,所以k-1>=0,b+c=环的长度,相当于a的距离是c的距离加n个环的距离)快指针从头结点出发,慢指针从相遇点出发,两个指针速度一样的情况下,两个指针必定会在环入口相遇,因为不管n等于多少,慢指针始终会转回相遇点,最终停下的位置一定是环入口。设置快慢指针,都从链表头出发,快指针每次走两步,慢指针一次走一步,假如有环,一定相遇于环中某点(结论1)。慢指针走的距离为a+b,快指针走的距离为a+k(b+c)+b,(k>=1,相当于是快指针比慢指针多走了几圈,k不能等于0,否则快慢指针走的距离一样)。原创 2024-07-22 23:28:20 · 383 阅读 · 0 评论 -
判断链表是否有环
设置快慢指针,都从链表头出发,快指针每次走两步,慢指针一次走一步,假如有环,一定相遇于环中某点。证明:设置快慢指针fast和low,fast每次走两步,slow每次走一步。假如有环,两者一定会相遇(因为low一旦进环,可看作fast在后面追赶slow的过程,每次两者都接近一步,最后一定能追上)。原创 2024-07-22 20:45:52 · 180 阅读 · 0 评论