今天学了快慢指针算法,思想很简单,不过有个困扰点:为什么两个指针一定会在某时刻相遇?
我当然知道追及问题,问题是这里不是连续移动直至经过(或追及),指针的移动方式是离散的,如何保证两指针一定会恰好在某个结点相遇?
具体的例子:快指针4,慢指针2,环路长4,假定两指针并非同起点出发(为了说明问题假设有此条件),快指针在环路起点时,慢指针恰在前一个位置。入环后,快指针速度恰等于环路长,故原地不动;而慢指针,恰在快指针左右来回摇摆,不得相遇。
在网上搜索了下,找到了满意的答案。
简单来讲,由于两指针的速度分别为1、2,相差1。设快指针落后慢指针 n 步:n=1时,下一步必恰好相遇;n>1时,可逐步缩小至n=1。
相关参考: