Tag: floyd cycle finding

为什么在链表中find循环的时候为什么不用3,4,5?

我已经看了一个关于在链表中find循环的algorithm的问题 。 我已经阅读了弗洛伊德的循环发现algorithm解决scheme,在很多地方提到我们必须采取两个指针。 一个指针(慢/龟)增加一个,其他指针(更快/更多)增加2.当它们相等时,我们find循环,如果更快的指针变为空,则链表中没有循环。 现在我的问题是为什么我们增加了更快的指针2.为什么不是别的? 增加2是必要的,或者我们可以通过增加X来得到结果。 如果我们用2递增更快的指针,或者可能出现需要增加3或5或x的情况,是否有必要find循环。

链表循环检测algorithm

我在网上读了一些关于如何在链表中find一个面试问题的方法,解决scheme(Floyd的循环寻找algorithm)有两个指针,一个比另一个快两倍,然后检查他们是否再次相遇。 我的问题是:为什么我不能只固定一个指针,只要每次向前移动另一个指针?

说明如何查找循环链表中的循环开始节点工作?

我知道龟兔会议结束了循环的存在,但是如何在会议场所保持野兔的同时将龟移动到链表的起点,然后又一步一步地让它们在循环的起始点相遇呢?