因此,如何检测链表中的循环有几个问题。 Here就是一个例子。我的问题是,为什么所有这些算法都使用两个指针?难道你不能只用一个指针循环并将节点标记为已访问,当你到达一个已经访问过的节点或到达链表的末尾(next = null)时,你知道没有循环?
答案 0 :(得分:2)
这是因为
将节点标记为已访问
你需要在节点本身中有额外的空间来做它,或者一个辅助数据结构,其大小会随着列表的大小而增加,而双指针解决方案只需要一个额外的空间来容纳一个指针。
[编辑添加:] ......也许,也许是因为双指针解决方案聪明,人们喜欢聪明的解决方案。