【问题标题】:Increasing fast pointer by 2 only in Floyd cycle finding algorithm仅在 Floyd 循环查找算法中将快速指针增加 2
【发布时间】:2015-10-02 04:22:53
【问题描述】:

我正在研究弗洛伊德的循环发现算法并且有一个疑问。

我们只将快速指针增加 2 吗?

是否有任何其他值应该是最匹配的?

【问题讨论】:

    标签: algorithm pointers floyd-cycle-finding


    【解决方案1】:

    假设两个指针都在一个循环中结束。相对于彼此,快速指针在每次迭代中向慢速指针移动 1 个单位。这意味着在某些时候指针必须重叠。这是一个方便的属性。

    我想你可以使用 3 速和 2 速指针来完成,但它不会更快,而且代码会更复杂(必须在每一步中写出对三个指针的检查,而不仅仅是 2 个)。

    【讨论】:

      【解决方案2】:

      如果您将快速指针的值增加两个以上,您可能会“跳过”两个指针重叠的值,最终不得不迭代更多次。

      通过将快速点增加 2,您可以保证在最坏的情况下最大限度地提高效率。

      【讨论】:

      • 但我没明白,如何保证将快速指针增加 2 时效率会提高?
      猜你喜欢
      • 2012-08-26
      • 2017-11-24
      • 2012-06-15
      • 2017-01-19
      • 2016-01-18
      • 2021-12-31
      • 2021-07-14
      • 2017-03-12
      相关资源
      最近更新 更多