前缀和及差分数组

前缀和

原数组 x0 x1 x2 x3 x4 x5
前缀和数组 x0 x0+x1 x0+x1+x2 x0+x1+x2+x3 x0+x1+x2+x3+x4 x0+x1+x2+x3+x4+x5
前缀和数组代数形式 x0’ x1’ x2’ x3’ x4’ x5’

计算原数组某区间的和 sum[x1,x2,x3]
利用前缀和计算
x3'-x0' = x0+x1+x2+x3-x0 = x1+x2+x3

差分数组

x0 x1 x2 x3 x4 x5
原数组 x0 x1 x2 x3 x4 x5
差分数组 x0 x1-x0 x2-x1 x3-x2 x4-x3 x5-x4
差分数组代数形式 x0’ x1’ x2’ x3’ x4’ x5’

计算原数组某区间所有元素同时增加 inc之后的数组

x0 x1 x2 x3 x4 x5
原数组区间[1,4]增加inc x0 x1+inc x2+inc x3+inc x4+inc x5
差分数组 x0 x1-x0+inc x2-x1 x3-x2 x4-x3 x5-x4-inc
步骤 x0 x1 x2 x3 x4 x5
1 x0 x1-x0+inc+x0
2 x0 x1+inc x2-x1+x1+inc
3 x0 x1+inc x2+inc
4 x0 x1+inc x2+inc x3-x2+x2+inc
5 x0 x1+inc x2+inc x3+inc x4-x3+x3+inc
6 x0 x1+inc x2+inc x3+inc x4+inc x5-x4-inc+x4+inc
7 x0 x1+inc x2+inc x3+inc x4+inc x5

可以看到最终与原数组区间[1,4]增加inc的结果一样

【结论】
原数组区间[l, r]的元素增加 inc
等价于其差分数组元素 d[l] + inc和元素 d[r] - inc之后的前缀和数组
在这里插入图片描述

力扣-1109. 航班预订统计

你可能感兴趣的:(算法)