【发布时间】:2016-08-19 01:18:21
【问题描述】:
所以有几个关于如何检测链表中的循环的问题。 Here 就是一个例子。我的问题是,为什么所有这些算法都使用两个指针?难道你不能只用一个指针循环并将节点标记为已访问,当你来到一个你已经访问过的节点或到达链表的末尾(next = null)时,你就知道没有循环?
【问题讨论】:
标签: algorithm linked-list
所以有几个关于如何检测链表中的循环的问题。 Here 就是一个例子。我的问题是,为什么所有这些算法都使用两个指针?难道你不能只用一个指针循环并将节点标记为已访问,当你来到一个你已经访问过的节点或到达链表的末尾(next = null)时,你就知道没有循环?
【问题讨论】:
标签: algorithm linked-list
这是因为
将节点标记为已访问
您需要节点本身的额外空间来执行此操作,或者需要一个辅助数据结构,其大小会随着列表的大小而增加,而双指针解决方案只需要足够的额外空间来容纳一个指针。
[编辑添加:] ...而且,也许,也因为两指针解决方案是聪明的,人们喜欢聪明的解决方案。
【讨论】: