正文
前缀和(Prefix Sum)是一种非常重要的预处理技巧,主要用于高效计算数组中任意区间的元素之和。
算法模板
1 | fun prefixSum(nums: IntArray): IntArray { |
使用说明
区间求和:
使用前缀和数组prefixSum,我们可以以 $O(1)$ 的时间复杂度回答多个区间和查询。计算区间[left, right](包含两端)的元素之和:1
val sum = prefixSum[right + 1] - prefixSum[left]
核心优势:
将多次区间查询的时间复杂度从 $O(N)$ 降低到 $O(1)$。注意点:
- 前缀和数组长度通常设为
n + 1,其中prefixSum[0] = 0。这样可以统一处理left = 0的边界情况,无需额外的if判断。 - 如果数组元素较大,注意前缀和数组可能发生整型溢出,必要时使用
LongArray。
- 前缀和数组长度通常设为