arrays - 用于确定排序数组中最大的一组连续均匀间隔的数字值的算法?

标签 arrays algorithm numbers

例如,在输入数组 [0,1,4,6,8,9,12] 中,连续均匀分布的数字的最大集合是 {0,4,8,12},下一个最大的是' t 最大的一个子集是 {4,6,8}。

最佳答案

您可以使用两次通过的方法:

diffarray = []

for (i= 0..array.size-2) {
    for (j= i..array.size-1) {
        diffarray[i][j] = array[j] - array[i]
    }
}

diffarray 是:

       0   1   4   6   8   9   12
      [0] [1] [2] [3] [4] [5] [6]
0 [0]  .   1   4   6   8   9   12
1 [1]  .   .   3   5   7   8   11
4 [2]  .   .   .   2   4   5    8
6 [3]  .   .   .   .   2   3    6
8 [4]  .   .   .   .   .   1    4
9 [5]  .   .   .   .   .   .    3

您现在可以遍历每一行中的所有元素,然后“向前”(向下和向右移动)。这可以递归地完成;请记住,步进的列数与行数相同。

关于arrays - 用于确定排序数组中最大的一组连续均匀间隔的数字值的算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3432387/

相关文章:

javascript - 如何有效地随机化索引之间的多个数组元素?

C - 10 到 30 之间的随机数

java - 在数组中查找多对(两对和/或葫芦)

java - 存储二进制字符串的所有可能序列,Java

c++ - 消除积木方案

algorithm - Haskell "as patterns"算法

javascript - 计算货币

java - 有没有更有效的方法来编码?

在c中创建结构体数组

c - 仅在 C 中使用指针打印字符串数组