链表环
来源:互联网 发布:moto z force网络参数 编辑:程序博客网 时间:2024/06/06 02:23
问题:给出一个链表环(像棒棒糖那样的,一个直线链一个环),问如何确定直线链和环的交点?直线链长多少?环长多少?
乍一看没大有头绪。感觉一般带链表环的总会用到追击法(一快一慢移动两个指针)来求,试一下吧。
假设快的指针为fast,慢的为slow
fast步长是slow的两倍(几倍都行无所谓,两倍好计算)
fast追到slow时,slow路程为s步
直线长a,环长n
相遇的点距离交点为r
开始分析吧:fast追到slow时,slow一定不会走完一整圈的环(自己思考为什么,可以用极限的方式思考),那么fast比slow多跑整数倍的n(为什么是整数倍,我们可以想象一下假如fast已经走了超过一圈,就当4圈吧,现在在距离slow 987/1000*n的位置,那么fast要套slow一圈是不是又得多跑13/1000*n呢?是不是多跑5圈,整数圈?fast未超过一圈时,道理一样),设为yn吧。
2s=s+yn
s=a+r
由上二式得出
a+r=yn,推出
a=yn-r,推出
a=(y-1)n+(n-r)
那么n-r是什么呢?其实就是与r互补的那部分。
让slow回到最初的原点,fast与slow用相同的速度走,便可以找到交点。只不过fast又转了y-1圈而已。
有了总步数和直线长,环长计算出来分分钟的事情。(其实让fast回复二倍速,二者再次相遇,也可求环长)
阅读全文
0 0
- 链表环
- 链表环检测
- 数据结构-链表环
- 链表环算法
- 链表环问题
- 链表环及其相关问题
- 表:链表环问题总结
- 判断链表环的入口
- 链表环问题总结
- 链表环问题研究
- 链表环检测算法
- 链表环的检测及其扩展
- 数据结构之链表--链表环
- 链表环的第一个节点
- 链表环的判断,是否相交
- 【链表1】有关链表环的各种问题
- Linked List Cycle II 链表环的入口
- 链表环查找(Linked List Cycle II)
- 最新phpstorm与webstrom破解汉化使用方法
- python笔记7
- 文章标题
- 【安全牛学习笔记】Kali Linux使用
- DynamicWebProject报错The superclass"javax.servlet.http.HttpServlet"was not found on the Java BuildPath
- 链表环
- pillow 图像信息获取
- 十进制转换(2、8、16)
- HDOJ3022 记忆化搜索
- HTML基础 网页结构基础6
- pmp引论-pmo -20171029
- Redis 主从复制
- python笔记8
- machine-learning-ex4