【发布时间】:2012-09-01 19:29:08
【问题描述】:
假设您有一个这样的序列:0、1、2、3、4、5、6、7、0、1、2 等。基本上是一个由 N 个数字组成的序列,一遍又一遍地重复。
找出这个序列中两个数字之间的距离/差的最简单算法是什么?例如距离from 5 to 7 is +2 和距离from 0 to 6 is -2。对于更高级的视图,我有一个循环/重复序列号,我需要找出最近路径上另一个数字的“之前”或“之后”多少(它们之间的数字最少)。
【问题讨论】:
-
你试过什么。当您找到 number1 时进行迭代,继续使用距离计数器进行迭代。如果你找到 number2 那么你有一个距离。如果找到 number1 则重置距离计数器。保存最小距离计数器。对于 - 只需交换两个数字。
-
我正在寻找快速的方法,我想出的最好的方法是这样的:
n = (from + size) - to; if n > size/2 then n -= size但它涉及一个分支 -
数字总是连续的吗?我刚刚意识到我看到了一个更复杂问题的答案
-
这是一个相关的问题(在 JS 中的实现):stackoverflow.com/questions/38797186/…