一、前缀和的作用
前缀和技巧适用于快速、频繁地计算一个索引区间内的元素之和。
二、前缀和的思路
将原始数组进行预处理,将来需要查询数据的时候,只需要查询预处理的前缀和数组的某些值即可。
前缀和的求解是【动态规划】。
三、前缀和的定义
四、前缀和数组的构造
//int[] nums = {3, 5, 2, -2, 4, 1};
// 构造方式一:
int[] prefixSum = new int[nums.length + 1];
prefixSum[0] = 0;
for (int i = 1; i < prefixSum.length; i ++) {
prefixSum[i] = prefixSum[i - 1] + nums[i - 1];
}
// 构造方式二:
int[] prefixSum = new int[nums.length];
prefixSum[0] = nums[0];
for (int i = 1; i < prefixSum.length; i ++) {
prefixSum[i] = prefixSum[i - 1] + nums[i];
}
递推公式:
- 子数组[i ... j]的和:nums[i ... j ] = preSum[j + 1] - preSum[i]
- 如果区间长度为1,即j == i,则nums[i] = preSum[i + 1] - preSum[i]