前缀和
原数组 | 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. 航班预订统计