一维数组前缀和的概念
前缀和的概念很简单,我们用一维数组的前缀和来举例,有如下一维数组:
arr = [1, 2, 3, 4, 5]
该数组的前缀和数组如下
preSum = [1, 3, 6, 10, 15]
关系如下:
- preSum[0] = arr[0]
- preSum[1] = arr[0] + arr[1]
- preSum[2] = arr[0] + arr[1] + arr[2]
- preSum[3] = arr[0] + arr[1] + arr[2] + arr[3]
- preSum[4] = arr[0] + arr[1] + arr[2] + arr[3] + arr[4]
可以发现前缀和数组元素 preSum[i]的值 其实就是 arr数组 0~i 前缀子数组的和。
而计算得到前缀和数组,可以利用动态规划,其状态转移方程如下:
- preSum[0] = arr[0]
- preSum[i] = preSum[i-1] + arr[i] ; (i >= 1)</