arrays - 未排序的移位数组的位移

标签 arrays algorithm sorting complexity-theory

我们有一个未排序的数组,其中包含不同的条目 a_1、a_2、... a_n,我们还知道一个移位数组 a_(n-k)、...a_n、a_1、a_2、...目标是找到给定这两个数组的位移 k。当然还有最坏情况的线性算法 O(n)。但我们能做得更好吗?

有暗示,答案与k分布有关。如果 k 在 0 和 n 之间均匀分布,那么我们必须在 O(n) 内完成。如果 k 以其他方式分布,可能会有一些更好的方法。

最佳答案

如果数组中没有重复项(不同的条目),我将使用 while 循环并从 0 开始递增索引值 k 并从头开始一次比较两个项目,一个从头开始。比如array1[k] === array2[0] 或者array1[n-k] === array[0] 和索引值k 应该是上述比较返回真值后的位移。

关于arrays - 未排序的移位数组的位移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40325299/

相关文章:

C++接收错误,该函数未在此范围内声明

javascript - new Array() 创建的 <empty> 元素有什么值?

c++ - 如何从 C++ 中的函数返回矩阵(板)?

algorithm - 在圆形碰撞和旋转方面需要帮助吗? - 游戏物理

c++ - 测试用户输入数组中的重复项的最有效方法是什么?

javascript - 使用纯JS计算布局

linux - 根据另一个文件中的第一列对文件中的数据进行排序

excel - 按字母顺序排序和过滤使用工作表名称自动填充的组合框

python - 从数组列中删除重复项

arrays - 如何在 Swift 中使用索引和元素迭代循环