leetcode【剑指offer DAY2-数组】

50 阅读1分钟

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、前缀和数组