【发布时间】:2015-10-02 04:22:53
【问题描述】:
我正在研究弗洛伊德的循环发现算法并且有一个疑问。
我们只将快速指针增加 2 吗?
是否有任何其他值应该是最匹配的?
【问题讨论】:
标签: algorithm pointers floyd-cycle-finding
我正在研究弗洛伊德的循环发现算法并且有一个疑问。
我们只将快速指针增加 2 吗?
是否有任何其他值应该是最匹配的?
【问题讨论】:
标签: algorithm pointers floyd-cycle-finding
假设两个指针都在一个循环中结束。相对于彼此,快速指针在每次迭代中向慢速指针移动 1 个单位。这意味着在某些时候指针必须重叠。这是一个方便的属性。
我想你可以使用 3 速和 2 速指针来完成,但它不会更快,而且代码会更复杂(必须在每一步中写出对三个指针的检查,而不仅仅是 2 个)。
【讨论】:
如果您将快速指针的值增加两个以上,您可能会“跳过”两个指针重叠的值,最终不得不迭代更多次。
通过将快速点增加 2,您可以保证在最坏的情况下最大限度地提高效率。
【讨论】: