问题标签 [floyd-cycle-finding]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 未知来源检测周期
如何检测无限序列中的重复数字?我尝试了Floyd & Brent检测算法,但一无所获……我有一个生成器,它产生的数字范围从 0 到 9(含),我必须识别其中的一个句点。
示例测试用例:
algorithm - 不同步长的 Floyd 环路检测算法
在链表中的Floyd 循环检测算法中,我们一般将慢指针加 1 个单位,快指针加 2 个单位。我们可以使用哪些其他值来增加慢速和快速指针,它们如何改变算法的复杂性?
algorithm - Floyd 的循环查找算法 - 需要两个指针吗?
我今天正在查看弗洛伊德的循环查找算法,并且有一个疑问。为什么他需要两个指针并以不同的速度移动它们?
相反,他可以创建两个指针,保持一个静态并将它的指针与另一个指针进行比较,然后递增?我的意思是即使这样也会导致找到周期,对吗?
algorithm - 链表循环 - 循环开始元素和列表长度
我读到了链表检测算法中的循环 ,我怀疑
1)如何检测“会议元素”。例如,在以下情况下 - 如何检测会议在第三个元素?
2)如何检测列表的长度(以上情况 - 6)
运行时间 O(n) 和内存 O(1)中的两个问题。
java - 我对弗洛伊德循环检测算法的实现不正确吗?
我有以下代码用于检测链表中的循环:
这段代码运行良好,直到我实际开始检测循环开始的部分,我在代码中对此进行了注释。不知何故,这陷入了无限循环。
我怀疑这在某种程度上与 Java 中的引用传递有关?我是否在更新head
检测循环时引用的值?我真的没有想法。请帮忙!
algorithm - 弗洛伊德在链表中寻找循环的算法,如何证明它永远有效
我了解 Floyd 循环检测算法的概念。得出的结论是,如果乌龟的行进速度是兔子的两倍,并且如果乌龟在一个循环中领先 k 米,那么乌龟和兔子将在循环之前遇到 k 米。
在单链表的情况下,指针 A 的移动速度是指针 B 的两倍。这意味着如果指针 B 需要 k 步才能到达循环的入口点(我们还不知道它在哪里),指针A 在循环内已经有 k 个节点的领先优势。因此,两个指针将在循环的入口点之前遇到 k 个节点。因此,如果我们将指针 B 移回头指针并将指针 A 保持在交汇点(现在两个指针都离入口点有 k 个节点),并以相同的速度移动,它们将在入口点相遇循环。
您如何证明该算法将在以下边界情况下工作?
- 最后一个节点循环回头部的链表。在这种情况下,起始值 k 是多少?
- 一个超长的链表,1000个节点,最后有一个小循环,3个节点。指针 A 将领先 1000,这意味着当指针 B 到达循环的入口点时,A 已经循环了很多次。
- 如果有 1 个节点的循环怎么办?
这不是家庭作业。一位面试官告诉我,如果我有一个小循环,这个算法将无法工作。他没有解释原因。
c - 如何从链接列表中删除循环
例如,如果链接列表是这样的:
1->2->3->4->5->6->7->8->9->4
我们可以使用弗洛伊德循环算法找到循环,但是在这种情况下如何去除循环呢?
algorithm - Floyd 的寻环算法
我阅读的有关该主题的所有文档都以循环外的起点解释了该算法。
如果我的链表只是一个巨大的循环,而我的起点就在中间呢???算法将如何处理?
乌龟和兔子肯定会在周期的某个时间点相遇,但起点将如何确定?由于整个列表是一个循环,因此没有真正的起点......
谢谢
c++ - Floyd 算法 - 循环检测 - 示例不终止
有人可以用这个例子解释弗洛伊德算法吗?它对我来说并没有终止,算法实现是否完整?
我的代码有问题吗?代码如下:
画的不好请见谅!