差分法
差分:
如果知道前缀和,这个就更加好懂
差分法:就是后面的数字减去前面的数字,num[i] = a[i] - a[i-1];
当然num[1] = a[1];
num是差分数组,a是原来数组
性质
前缀和就是原来的数组的值:a[i] = num[i] + num[i-1]+……+num[0];
区间相加:(当产生大量的修改的时候,前缀和不是很好。可以考虑差分)
在区间[left,right]上加一个常数c。
我们可以利用原数组就是差分数组的前缀和这个特性,来解决这个问题。显然可得出公式:b[left]+=c,b[right+1]−=c
比如:a数组是:1 8 9 10,那么num数组是1 7 1 1
我想在1号下标到3号下标加2,那么num数组是:1 9 1 1