当前位置: 首页 > news >正文

环形链表相关问题

1.判断是否有环
    当一个指针一次走一步,一个一次走两步,假设两个指针在慢指针进环时直接的距离为n,那么因为他们之间的步长差为1,再一定次数的循环之后,就能够实现相遇。



2.如果快指针一次走三步呢?

 
      也是没有关系的,首先要把这种分为两种情况讨论,

1:走三步则间距是2了嘛,当慢指针开始进环时相差为奇数的时候,就会出现套圈,这时候距离就变为了C-1,如果C-1为偶数,那就会相遇;

2:但是C-1为奇数就不会套圈,既C为偶数;

设慢指针指针刚入圈时,快指针需要走N才能追上,头到起点的距离为L,环长为C;

让我们计算一下可能进入的圈内的情况,

快指针走过的路线长度为 L+nC+(C-N)

慢指针走过的路线长度为 L

3L= L+nC+(C-N)->2L=(n+1)C-N,因为2*L一定为偶数,所以后面这两项为偶偶或者奇奇;

于是可以知道C和N为偶偶或者奇奇,那么当步数为3的时候,步差为2,当N为奇数的时候会套圈,这时就看C-1是不是偶数,也就是C是不是奇数,当C是偶数的时候就会遇不上,但是由上述已经知道必为奇数,也就是必定遇见。(至于其它情况则需要进行类似的推导,如果没有限制到那就有可能相遇不了)



3.如何求解环的起始点?

这个式子可以知道L是(n-1)圈再加上相遇点走回起始点,所以得到思路:

先寻找相遇点,再让head头指针和相遇点的指针每次走1步,相遇时head指针就是环起始点,注意点:是每个指针走一步,不再是快指针两步
 

                           


http://www.mrgr.cn/news/50705.html

相关文章:

  • 分布式缓存详解!
  • nginx web代理
  • Docker system
  • “医者仁术”再进化,AI让乳腺癌筛查迎难而上
  • 震撼发布!libcom:上海交大黑科技,一键搞定图像合成,让你的创意秒变现实!
  • 【Docker项目实战】使用Docker部署HumHub社交网络平台
  • unordered_map和unordered_set
  • Java:双列集合
  • Leetcode 1489. 找到最小生成树里的关键边和伪关键边
  • 正交标架坐标变换合同变换
  • 挖掘空间数据要素典型领域应用场景
  • OpenBayes 教程上新丨打光神器 IC-Light 上线,光影效果高度一致,快速拯救废片
  • 结构型-适配器模式
  • 【MySQL】表的操作
  • 从零实现llama3(学习)
  • 海外云手机:出海电商养号智能化方案
  • 【C++基础知识——C++ 头文件中能用std::cout输出信息吗?】
  • 智能驾驶仿真网络:现实与虚拟交汇的基石
  • 体面厂的分手应该体面
  • 基于Springboot+Vue的商城积分系统(含源码数据库)