floyd-cycle-finding

    3热度

    2回答

    有人可以请解释Floyd算法与这个例子。它不是终止我的,算法是否实现了完整? 我的代码有问题吗?代码如下: Node* FindLoopBegin(Node *head){ Node *slowptr = head,*fastptr = head; bool LoopExists = false; while(slowptr && fastptr){ fa

    43热度

    3回答

    我在网上阅读了一些关于如何查找链表中是否存在循环的采访问题,解决方案(Floyd的循环查找算法)有两个指针,一个比另一个快两倍,并检查他们是否再次见面。 我的问题是:为什么我不能只固定一个指针,只要每次向前移动另一个指针1步?

    4热度

    2回答

    我今天正在通过Floyd的循环寻找算法,并且有疑问。为什么他需要两个指针并以不同的速度移动它们? 他可以代替创建两个指针保持一个静态的,它的指针和其他指针,这是他比较递增?我的意思是即使这样也会导致查找周期正确吗?

    0热度

    1回答

    在一次采访中,我被要求检测链表中的循环节点并计算循环中的节点数。由于我没有意识到flyod算法,我试图找出我自己的方法。 这个想法是在这种情况下,两个节点的地址将指向同一个节点(循环节点)。 EG。 1 - > 2 - > 4 - > 5 - > 7 - > 3 - > 4 这里2->下和3->下是一样的,这是地址4.这意味着链表中有一个循环,4是循环节点。并且从4到4的遍历将给出循环中的节点的数

    1热度

    3回答

    在弗洛伊德环路检测算法在链表,我们一般由2单位增量缓慢指针由1个单元和快速指针。我们可以使用其他什么值来增加慢速和快速指针,以及它们如何改变算法的复杂度?

    0热度

    1回答

    考虑以下链表: 1->2->3->4->5->6->7->8->9->4->...->9->4..... 上面所列内容具有循环如下: [4->5->6->7->8->9->4] 绘制在白板上的链表,我试图手动解决它对于不同的指针的步骤,以看到指针如何走动 - (slow_pointer_increment, fast_pointer_increment) 所以,differen指针吨情况如

    1热度

    1回答

    在最好的方法来检测一个循环链表,我们执行以下操作: 用弗洛伊德的循环查找算法中的识别位置在一个链表中循环。 计算链接列表中循环的大小 将一个指针放在列表的开头,另一个'k'(其中k是循环的大小)位置移开。 在迭代过程中,它们在循环开始时相遇。 我想知道这是为什么起作用。这背后的一些理论逻辑?

    1热度

    1回答

    今天我读到了Floyd在链表中检测循环的算法。 我只是想知道,如果我们跳过多个节点(比如说2) 更快的循环检测会不会更好? 例如: fastptr=fastptr->next->next->next. 注意副作用将同时改变fastptr予以考虑。

    0热度

    1回答

    我有一种检测链表一个周期下面的代码: public Class Node { Object data; Node next = null; } boolean containCycle() { boolean retVal = true; Node head = this; Node slower = head; Node fast

    0热度

    2回答

    在面试问题中,“实现检测循环存在的算法”。例如,链表有一个循环,如: 0--->1---->2---->3---->4---->5---->6 ▲ | | ▼ 11<—-22<—-12<—-9<—-8 使用Floyd的周期检测,这个问题可以通过使用快速&慢指针来解决。所以我应该试着比较一下 a。 Link的节点值,即 if (fa