什么是前缀和
前缀和指一个数组的某下标之前的所有元素的和(包含其本身)。前缀和分为一维前缀和,以及二维前缀和。前缀和是一种重要的预处理方式,能够降低算法的时间复杂度。
什么是一维前缀和
一维前缀和的公式:
sum[i] = sum[i-1] + arr[i]; sum是前缀和数组, arr是内容数组让我们看一道例题,力扣第 303 题「区域和检索 -
数组不可变」,让你计算数组区间内元素的和,这是⼀道标准的前缀和问题。
看完这道题,我们可能首先想到的是遍历数组。
题目要求我们实现这样一个类
class NumArray {
public NumArray(int[] nums) {
}
/* 查询闭区间 [left, right] 的累加和 */
public int sumRange(int left, int right) {
}
}
sumRange函数返回一个索引区间的和
class NumArray {
private int[] nums;
public NumArray(int[] nums) {
this.nums = nums;
}
public int sumRange(int left, int right) {
int res = 0;
for (int i = left; i <= right; i++) {
res += nums[i];
前缀和是数组中某下标之前所有元素的和,用于降低算法复杂度。一维前缀和通过预处理可以将力扣303题的sumRange函数优化到O(1)。二维矩阵前缀和类似,用于解决如力扣304题的子矩阵元素和问题,通过维护额外数组实现高效计算。
最低0.47元/天 解锁文章
1868

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



