差分数组是与前缀和数组所对应的一种逆操作,类似于求导和积分,也就是说:
对差分数组求前缀和,可以得到原数组,同样的,对前缀和数组求差分,也可以得到原数组。
差分数组的性质是:
当我们希望对原数组的某一个区间[l,r]施加一个增量x时,差分数组diff对应的变化是:diff[l]增加x,diff[r+1]减少x,并且这种操作是可以叠加的。
以数组nums为例

将数组nums的区间[3,6]施加一个增量3时,得到的diff数组中,diff[3]增加33,diff[7]减少3。

LeetCode1109 航班预定统计
class Solution:
def corpFlightBookings(self, bookings: List[List[int]], n: int) -> List[int]:
res = [0] * n
for l, r, seats in bookings:
res[l - 1] += seats
if r < n:
res[r] -= seats
for i in range(1,n):
res[i] += res[i-1]
return res
文章介绍了差分数组的概念,它与前缀和的关系以及如何进行区间增量操作。在LeetCode1109题目中,通过差分数组可以高效地处理航班座位预订的统计,通过对预订区间应用增量并累加到差分数组,最后转换回原数组得到结果。
2134

被折叠的 条评论
为什么被折叠?



