一维前缀和:简单来讲就是求前原数组前n个元素的总和,在处理L,r范围的数据总合,我们不可能总是每次都去循环求总合,时间复杂度不允许。

** 推导:递推公式:**

sum[ i ] = arr[i − 1]+sum[ i − 1 ]

此时我们多开一个内存的意义就可以体现出来了,当我们求第一个元素数组的时候需要加上前一个sum 。

但是如果第一个元素前一个位置没有东西就会发生越界访问,因此我们要给他提前准备一个内存并且默认为0。

总的来说,就是为了处理第一个元素越界的问题。

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int arr[5] = {1,2,3,4,5};
	int sum[6];
	sum[0] = 0;

	for (int i = 1; i < 6; i++) sum[i] = arr[i - 1] + sum[i - 1];

	for (auto i : sum) cout << i << ' ';
	
	return 0;
}

那么输出就是0 1 3 6 10 15

这样我们就可以通过给定的l,r求得这个区间的数据总合。