(ACWing yxc基础算法课笔记) 前缀和

本文介绍了前缀和的概念,即数组中连续子数组的累加和,强调下标从1开始,边界值s0为0。前缀和的主要应用在于快速求解数组中某区间的和,其时间复杂度为O(n)。文章通过举例和Java代码实现,详细解释了前缀和的计算方法及其在解决区间和问题上的高效性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们有一个长度为n的数组。

 

我们的前缀和就是把这个原数组中的若干个元素进行累加计算。

这里有个重要的点就是下标一定要从1开始。

我们第一个问题就是如何去求我们的si:

 

我们的前i项和的求法是前i-1项的和加上第i个元素。

这里有个边界就是我们的s0要定义成0.

它的作用是能求出y一个数组中任意一段数的和:

比如我们可以求出一个数组中l-r区间段的和。

这基本是咱们前缀和唯一的应用。

 

s0=0是因为一个边界值的问题,我们求s10的时候因为想求任何一段都用同一个公式,所以会涉及到s10-s0.

我们现在来看一个具体的应用:

 

 

整个流程的时间复杂度是O(n),每次询问的时间复杂度是O(1)

然后我们现在来用Java代码给它去实现一下:

这个题它的思想不算难,代码也不算多,我们是不需要记什么模板的,就学会就行:

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值