【问题标题】:Algorithm for determining largest set of successively evenly spaced value of numbers in a sorted array?确定排序数组中最大连续均匀间隔的数字值的算法?
【发布时间】:2010-08-07 23:04:00
【问题描述】:

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

【问题讨论】:

  • 至少尝试提出一个问题(动词+问号),并尝试解释您考虑过的方法。
  • 你的意思是依次增加?如果你有 [a_1,a_2,a_3,...,a_n],你想要 a_i

标签: arrays algorithm numbers


【解决方案1】:

您可以使用两遍方法:

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

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

【讨论】:

    猜你喜欢
    • 2021-09-25
    • 1970-01-01
    • 1970-01-01
    • 2012-04-11
    • 2018-08-19
    • 1970-01-01
    • 2016-06-14
    • 2013-09-04
    • 2021-03-31
    相关资源
    最近更新 更多