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

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

 

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

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

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

 

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

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

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

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

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

 

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

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

 

 

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

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

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

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值