差分数组(线性一维)

差分数组:将数组相邻两两做差  最后补上原数组的第一个元素
得到差分数组后,从左到右累加 可以得到原来的数组

有什么用?
如果在原数组的一段连续子数组加上或减去一个值,再次两两作差,并在前面补上原数组的第一个元素,就可以发现只有两个差分数组的下标值发生变化

换句话说,对原数组a的[i,j]区间做加法减法操作,等价于在其差分数组d上d[i]+1   d[j+1]-1 因为中间的会减去这个相同的值,只会影响两边的值

差分数组:

  1. 从左到右累加d中的元素,得到原数组a
  2. 把a[i],a[i+1]....a[j]加上x
    等价于把d[i]+x,d[j+1]-x

这样子,就可以用O(1)的时间完成对子数组a的操作
最后用(1)还原出原数组

posted @ 2025-05-20 08:35  zhouhongyu  阅读(29)  评论(0)    收藏  举报