链表问题:如何判断一个链表有环,以及环的长度,起始位置。
2012-08-13 15:33
766 查看
1. 判断链表是否有环:
采用两个指针,一个每次循环前进一步,一个每次循环前进两步。如果存在环,则一定会相交。否则速度快的指针首先为NULL,或其next为NULL。
2. 环的长度:
从相交点开始,循环一次,直到再次到该相交点。循环次数即为环的长度。
3. 环的起始位置:
若相交点为P,环长度为M。计算head节点到交点的距离,为N。
则有,
P点走M距离回到P点。
head走N距离到P点。
设表头到环起始点的距离为L。
为了让两个指针同时走到环的起始点。让一指针从head节点开始先走N-M距离。则第一个相遇点即为环的起始点。
采用两个指针,一个每次循环前进一步,一个每次循环前进两步。如果存在环,则一定会相交。否则速度快的指针首先为NULL,或其next为NULL。
2. 环的长度:
从相交点开始,循环一次,直到再次到该相交点。循环次数即为环的长度。
3. 环的起始位置:
若相交点为P,环长度为M。计算head节点到交点的距离,为N。
则有,
P点走M距离回到P点。
head走N距离到P点。
设表头到环起始点的距离为L。
为了让两个指针同时走到环的起始点。让一指针从head节点开始先走N-M距离。则第一个相遇点即为环的起始点。
相关文章推荐
- 如何判断链表有没有环,环的大小?环的切入点在哪里以及链表的长度(分别用javascrip和Java代码实现)
- 判断单链表是否有环,以及如何找起始点,环的长度
- day03之判断链表带环以及求环的长度及环的入口点+一个类不能被继承及只能分别在栈堆上创建对象
- 判断一个链表是否有环以及环的位置入口
- 判断链表是否在尾部有环以及环起始点的位置
- 判断一个链表是否有环以及长度
- [算法]判断一个链表是否有环及环开始的位置
- 如何最简单的搜索一个未知长度链表的倒数第k位。
- 笔试面试3 将一个数分解成质因数的形式以及如何判断一个数是否是质数
- 如何判断一个链表有环?
- 链表面试题----判断一个单链表是否带环,若带环,求入口点和环的长度
- 如何判断一个类是否支持某属性和方法以及如何判断IOS的版本
- indexOf() 如何判断一个元素在指定数组中是否存在? 找出指定元素出现的所有位置? indexOf()方法 是正序查找,lastIndexOf()是倒叙查找
- 判断一个链表中是否有环,并且得到环的入口位置
- 如何判断一个单向链表是否为回文链表(Palindrome Linked List)
- 如何判断两个单链表是否相交以及找出第一个相交的位置
- 今天碰到一个问题,怎么限制用户在固定宽度的input输入框里输入的长度,由此涉猎到了maxlength属性和size属性以及它们的区别。
- 线程安全 问题 如何判断一个类是否是线程安全的
- 关于链表的面试问题(判断一个单链表中是否有环)
- 笔试题:判断一个单链表是否有环,如果有,找出环的起始位置