算法笔记(五):前缀和

(5)前缀和

目录

一、介绍

二、定义

三、一维前缀和 

定义

作用

方法

 接下来是实战演练!!!

四、二维前缀和

 定义

 作用

 方法

具体代码!!!

写在最后!!!


一、介绍

前缀,顾名思义就是一个东西前面的点缀...(hhhh玩笑了)

其实打比方来说就是:假如有一字符串ABCD,那么他的前缀就是A、AB、ABC、ABCD这四个从新从第一个字母一次往后开始拼接的字符串。当然这是字符串。但前缀和一般应用于数组,对于给定的数组a=[1,2,3,4],他的前 i 项和sum[i]就表示数组中a[0]~a[i]的和,具体为:

sum[0]=a[0]

sum[1]=a[0]+a[1]

......

sum[i]=sum[0]+sum[1]+...+sum[i];

二、定义

 定义:前缀和是指某一序列的前 n 项和

 基于前缀和的使用,我们一般把前缀和分为一维前缀和二维前缀和

三、一维前缀和 

定义

基于一维数组的前缀和就是原数组前n个元素的和

const int N = 10010;

int a[N]; //原数组a[]
int s[N]; //前缀和数组s[]

//根据定义 一维前缀和s[i]
s[i] = a[1] + a[2] + a[3] +...+ a[i];

//举例 设i=3 根据上式可得
s[3] = a[1] + a[2] + a[3];

//根据上面举例,可以再一步写成
s[i] = s[i-1] + a[i]; 

需要注意的一点是:数组的下标都是从 1 开始的!!!

作用

 主要作用是可以在O(1)时间情况下快速的求出任一区间[l,r]内的元素之和

//例如求a[3]+...+a[10]之间的和,我们可以利用前缀和迅速求出:
  a[3]+...+a[10]
= (a[1]+a[2]+a[3]...+a[10]) - (a[1]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值