不确定这是否是正确的地方,但我有一个关于处理具有 o(1) 复杂度的像素数组的技术的问题。那是要获得数组子集的总和,但如果该子集超出数组的边界,则将其设为零。这是一个二维数组。
实际上,该数组可以达到 [2000][2000],但为了简单起见,我们采用大小为 [4][4] 的 2D 数组。
array[4][4] = {0, 1, 2, 3
4, 5, 6, 7
8, 9, 10, 11
12, 13, 14, 15}
现在假设我想得到 [2][2] 和 [3][3] 之间的数组之和,即添加 10 + 11 + 14 + 15。这可以在 ao(1) 解决方案中使用总面积表。
但是,我对如何保持这种 o(1) 复杂性有点困惑:
- 数组子集延伸到实际数组之外
- 实际数组之外的数组索引被视为零。
- 算法计算量还是o(1)
因此,例如,对于这个像素总和,我被要求得到 [2][2] 到 [4][4] 的总和。这有一个理论数组,实际之外的数字表示为 f(代表假):
array_theory[5][5] = {0, 1, 2, 3, 0f
4, 5, 6, 7, 0f
8, 9, 10, 11, 0f
12, 13, 14, 15, 0f
0f, 0f, 0f, 0f, 0f}
我想我必须使用某种过滤器或图像处理技术,我似乎无法在网上找到或不知道关键字,并且在我的搜索结果中与它调情。
任何帮助将不胜感激!