算法——快慢指针迷思

今天学了快慢指针算法,思想很简单,不过有个困扰点:为什么两个指针一定会在某时刻相遇?

我当然知道追及问题,问题是这里不是连续移动直至经过(或追及),指针的移动方式是离散的,如何保证两指针一定会恰好在某个结点相遇

具体的例子:快指针4,慢指针2,环路长4,假定两指针并非同起点出发(为了说明问题假设有此条件),快指针在环路起点时,慢指针恰在前一个位置。入环后,快指针速度恰等于环路长,故原地不动;而慢指针,恰在快指针左右来回摇摆,不得相遇

 

在网上搜索了下,找到了满意的答案。

简单来讲,由于两指针的速度分别为1、2相差1。设快指针落后慢指针 n 步:n=1时,下一步必恰好相遇n>1时,可逐步缩小至n=1

 

相关参考:

  1. 知乎用户回答1,两指针速度分别为1、2时,必相遇
  2. 知乎用户回答2,是否同起点的影响以及必定相遇的条件
  3. 背后的更深层问题及解答
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值