algorithm - 如何计算循环移位的连续整数之间的距离?

标签 algorithm math modulo

例如具有n=10 元素的数组:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

循环左移 3,所以第一个数字是 f=3 以生成数组:

[3, 4, 5, 6, 7, 8, 9, 0, 1, 2]

i=8j=1d=3步,即从左到右的距离d。从i=8j=3d=5步,因为在2之后循环跳转到3(将其视为一个环)。当 nf 已知时,通常如何计算两个数字 i,j 之间的距离 d,假设数组总是包含循环左移的连续整数,初始值从 0 开始?

最佳答案

如果你想知道任何方向的距离,那么这只是一个减法的问题。如果 i=8 且 j=5,则距离为 |j-i|(j-i 的绝对值),因此为 3。

但是,如果您想要将 j 放在 i 的位置所需的周期数,那么它对应于:

if j - i < 0
    answer = j - i + n
else
    answer = j - i

因此对于 i=8 和 j=5,其中 n=10,则为 5-8+10=7。但这甚至可能不是你想要的,问题不是很清楚。编辑:等等,我的原则是 i 和 j 是数组中的位置,而不是值。这可能令人困惑:/

关于algorithm - 如何计算循环移位的连续整数之间的距离?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28544347/

相关文章:

c - 理解 k&r 中的 entab 示例代码

math - 1 mod 3的解释

c - 通用哈希的性能比模哈希差,有什么问题吗?

java - 在给定方向上环绕等距点集

python - 我收到警告 <RuntimeWarning : invalid value encountered in sqrt>

java - 在 Java 中循环并获取总和,而不使用任何内置函数

algorithm - 如何从两个位置的纬度和经度找到距离?

c# - 矩形内最大的空矩形

algorithm - 寻找偏序集子集的最大元素

选路算法