前缀和与差分 (Prefix Sum & Diff)

高效处理区间查询与区间修改

前缀和 (Prefix Sum)

用于快速计算静态数组的区间和(Time: O(1))。

S[i] = A[1] + A[2] + ... + A[i]

A[]:
S[]:
查询区间 L: R:
Result: ?
sum(L, R) = S[R] - S[L-1]

差分 (Difference Array)

用于快速进行区间修改(Time: O(1))。

B[i] = A[i] - A[i-1],则 A[i] 是 B 的前缀和。

A[]:
B[] (差分):
修改区间 L: R: 增加值 Val:
核心操作:B[L] += val; B[R+1] -= val; 然后重新计算前缀和得到新的 A。