数组中的前缀和

前缀和是数组中某下标之前所有元素的和,用于降低算法复杂度。一维前缀和通过预处理可以将力扣303题的sumRange函数优化到O(1)。二维矩阵前缀和类似,用于解决如力扣304题的子矩阵元素和问题,通过维护额外数组实现高效计算。
摘要由CSDN通过智能技术生成

什么是前缀和


前缀和指一个数组的某下标之前的所有元素的和(包含其本身)。前缀和分为一维前缀和,以及二维前缀和。前缀和是一种重要的预处理方式,能够降低算法的时间复杂度。

什么是一维前缀和

一维前缀和的公式: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];
 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值