前缀和 和 差分
前缀和指一个数组的某下标之前的所有数组元素的和(包含其自身)。前缀和分为一维前缀和,以及二维前缀和。前缀和是一种重要的预处理,能够降低算法的时间复杂度。
前缀和:
一维前缀和的公式:sum[i] = sum[i-1] + arr[i] ; sum是前缀和数组, arr是内容数组。拥有前缀和数组后, 我们可以在O(1)的时间复杂度内求出区间和。
[i, j]的区间和公式: interval [i, j] = sum[j] - sum[i - 1]
对于二维数组,s[i][j]表示的是从左上角[1][1]到[i][j]矩阵的和,注意会有重复的,s[i][j]的取法不一样。
对于给一个询问矩阵[x1,y1]到[x2][y2]之间的和,我们可以用
\large s[i][j]=s[i-1][j]+s[i][j-1]-s[i-1][j-1]+a[i][j]]

浙公网安备 33010602011771号