大家好,又见面了,我是你们的朋友全栈君。
差分数组在数组某一段数值同乘以一个值,或者求某数组的前n项和非常方便
int a[] = {
0,1,2,3,4,5};
b[i] = a[i] - a[i-1];(1<i≤n,b[1]=a[1],a[0] = b[0] = 0)
b[ ] = {0,1,1,1,1,1}
则称b[ ]是a的差分数组,它具有的性质是a[i] = b[i] + b[i-1] + … + b[1];
如果要在数组a的【x,y】区间上每个元素加上z,那么只要修改b[x] 和 b[y+1]这两个值
也就是:
b[x] += z;
b[y+1] -= z;
除此之外,我们还有
f[i]=f[i-1]+d[i](1<i≤n,f[1]=d[1]=a[1]);
sum[i]=sum[i-1]+f[i](1<i≤n,sum[1]=f[1]=d[1]=a[1])。
所以 s u m [ i ] = ∑ a [ i ] sum[i] = \sum a[i] sum[i]=∑a[i]
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/134548.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...