1.前缀和模板
一维前缀和模板
- 1.暴力解法
要求哪段区间,我就直接遍历那段区间求和。
时间复杂度O(n*q)
- 2.前缀和 ------ 快速求出数组中某一个连续区间的和。
-
-
1)预处理一个前缀和数组
这个前缀和数组设定为dp,dp[i]表示:表示[1,i]区间内所有元素的和。所以,只要题目要求出 【l,r】区间内元素的和,只需要利用前缀和数组dp,计算dp[r] - dp[l-1]即可。
-
所以,使用前缀和算法的时间复杂度是O(n) + O(q)
初始化完成前缀和的时间复杂度是O(n),每次求出区间内所有元素的和的时间复杂度是O(1),一共要求q次,则复杂度是O(q)。
二维前缀和
二维前缀和模板
1.暴力解法
题目要求求哪个区域的和,就求哪个区域的。
所以就是两层循环求和即可。
2.前缀和
2.1)填充一个前缀和数组,该前缀和数组表示的含义是:
dp[i][j] : 从[1,1]位置到->[i,j]位置区域内所有元素的和。