【发布时间】:2014-07-17 03:32:00
【问题描述】:
在龟兔算法中,为什么我们总是让兔子向前走两步,兔子向前走1步然后比较它们,我们也可以让兔子向前走1步,然后再次检查是否相等,然后增加乌龟并再次检查它们是否相等!我认为这将有助于更快地找到循环?
例如。这个伪代码
tortoise := firstNode
hare := firstNode
forever:
if hare == end
return 'No Loop Found'
hare := hare.next
if hare == end
return 'No Loop Found'
if hare==tortoise
return true
hare = hare.next
tortoise = tortoise.next
if hare == tortoise
return 'Loop Found'
【问题讨论】:
-
我认为“重复”帖子中没有回答这个问题。
-
@MarkRansom:兔子和乌龟最好用比例模型来解释。言语似乎永远不够好。我记得之前尝试过解释这个简单而聪明的算法 -- stackoverflow.com/questions/16092913/… -- 并不是每个人都对这个解释感到满意。但我还是在这里再试了一次。
标签: algorithm