二維累積和 | 會動的演算法

符號表示

資料
矩形重疊的個數A

新增矩形
將對應於左上角及右下角的元素加 1。A[x1][y1]++
A[x2][y2]++
將對應於左下角及右上角的元素減 1。A[x1][y2]--
A[x2][y1]--
掃描水平方向
加上前 1 欄的元素。A[x][y] ← A[x][y] + A[x-1][y]
掃描垂直方向
加上前 1 列的元素。A[x][y] ← A[x][y] + A[x][y-1]

演算法動畫

新增矩形
二維累積和 | 新增矩形

掃描水平方向
二維累積和 | 掃描水平方向

掃描垂直方向
二維累積和 | 掃描垂直方向