【发布时间】:2015-09-27 13:41:12
【问题描述】:
我有一个用整数填充的二维数组。我想要一种在 O(1) 时间内找到数组某些部分的平均值的方法。例如,我有数组A[][] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};,算法的输入是边界。所以Algorithm(int top, int bottom, int left, int right)。如果 top = 1 , bottom = 2, left = 1, right = 2 ,则该部分将是从第二行到第三行以及从第二到第三列。所以平均值为 (5+6+8+9)/4。
【问题讨论】:
-
你必须读取这些值,所以看不出这怎么可能是 O(1)。它几乎必须是 O(n)(其中“n”是值的数量),除非您对问题有其他限制。
-
@GordonLinoff 作业中有一条提示说,可以通过预先计算所有可能子区域的平均值来加快速度。但我不知道该怎么做?
-
查找整体图像。
标签: algorithm multidimensional-array data-structures runtime