如何初始化二维数组以统计左上角至各点矩形区域内1的数量?
构建二维前缀和数组(统计左上角到各点矩形内1的数量)
各位,如果你需要快速统计二维数组中从左上角到任意坐标点的矩形区域里1的总数,构建二维前缀和数组是高效的解决方案。下面是基于给定输入的详细步骤:
1. 原始二维数组
首先看我们的输入数组(4行7列):
[ [0, 1, 0, 0, 0, 1, 0], [1, 1, 0, 0, 1, 0, 1], [0, 1, 1, 0, 1, 0, 0], [0, 0, 0, 0, 0, 0, 1] ]
2. 第一步:纵向求和(与上方元素累加)
我们先对数组做纵向累加处理——每个元素的值等于它自身的原始值加上正上方对应位置元素的值(第一行没有上方元素,保持原始值不变)。按照你提供的计算结果,这一步得到的中间数组如下:
[ [0, 1, 1, 1, 1, 2, 2], [1, 2, 2, 2, 3, 3, 4], [0, 1, 2, 2, 3, 3, 3], [0, 0, 0, 0, 0, 0, 1] ]
3. 第二步:横向求和(与左侧元素累加)
接着对纵向累加后的数组做横向累加——每个元素的值等于它当前的纵向累加值加上左侧对应位置元素的值。这一步完成后,数组中的每个元素就代表了从左上角到该点的矩形区域内1的总数,完整结果如下:
[ [0, 1, 1, 1, 1, 2, 2], [1, 3, 3, 3, 4, 5, 6], [1, 4, 5, 5, 6, 7, 7], [1, 4, 5, 5, 6, 7, 8] ]
内容的提问来源于stack exchange,提问作者Kurns
相关产品推荐
相关产品推荐

