相关疑难解决方法(0)

如何检测链表中的循环?

假设您在Java中有一个链表结构.它由节点组成:

class Node {
    Node next;
    // some user data
}
Run Code Online (Sandbox Code Playgroud)

每个节点都指向下一个节点,最后一个节点除外.假设列表有可能包含一个循环 - 即最终的节点,而不是具有空值,具有对列表中的一个节点的引用.

什么是最好的写作方式

boolean hasLoop(Node first)
Run Code Online (Sandbox Code Playgroud)

true如果给定的Node是带循环的列表的第一个,它将返回,false否则?你怎么写,这需要一个恒定的空间和合理的时间?

这是一个循环列表的图片:

替代文字

java algorithm linked-list data-structures

413
推荐指数
9
解决办法
16万
查看次数

解释循环链表中查找循环开始节点的工作原理?

我知道Tortoise和Hare的会议总结了循环的存在,但是如何将兔子移动到链接列表的开头同时将野兔保持在会场,然后一步一步地移动两个步骤使它们在循环的起始点相遇?

algorithm linked-list cycle floyd-cycle-finding

146
推荐指数
9
解决办法
8万
查看次数

如何证明弗洛伊德循环检测算法的第一部分?

在弗洛伊德算法的第一部分中,兔子每走一步就移动两步。如果乌龟和兔子相遇,则存在一个循环,并且相遇点是循环的一部分,但不一定是循环中的第一个节点。

如果圆圈存在,我无法理解为什么两个指针必须在某个时候相遇?用“三步”代替“两步”怎么样?

希望有人能证明给我看...

algorithm

4
推荐指数
1
解决办法
1059
查看次数