1、差分数组 应用:对于区间中的元素进行整体操作
例子:对数组中的[0-10]进行加一,[5-15]进行加一,[3-8]进行减一...等一系列操作
【考虑到效率因素,不会对数组循环增减】
做法: 首先根据原数组,构造一个差分数组p
原数组:[2, -4, 5, 3]
p: [2, -6, 9, -2] 【原数组后一个减前一个数,累加即可还原】
那么现在就可以根据区间进行增减:
-
对数组的[1-2]加一,p[1]++ p[2+1]-- [2, -5, 9, -3] -> [2, -3, 6, 3]
-
对数组的[1-2]减一,p[1]-- p[2+1]++ [2, -7, 9, -1] -> [2, -5, 4, 3]
2、前缀和数组