前缀和算法模板

一维前缀和

算法用途:快速求出数组中某一连续区间的和

一维前缀和算法模板

1、预处理出一个 dp 数组

要求原数组存储在 n + 1 的空间大小中,其中后 n 个空间存数据。

dp数组,数组开 n + 1个空间,dpi 表示 1, i 区间内所有元素的和

处理方法: dp i = dp i - 1 + arr i

2、使用前缀和数组

**区间 l 到 r 的和:**sum = dp r - dp l - 1

复杂度分析

处理前缀和数组,需要 O(N) 的空间复杂度和空间复杂度,求一次区间 l 到 r 的和,需要 O(1) 的时间复杂度,如果需要求 q 次和,则时间复杂度就是 O(q) + O(N)

二维前缀和

算法用途:快速求出某个子矩阵的和

二维前缀和算法模板

1、预处理出一个 前缀和矩阵(二维数组 dp)

假设原矩阵有 m 行,n列,那么这个前缀和矩阵的二维数组 dp 要开 m+1 行, n+1 列的空间,第一行,第一列的数据都为 0, dp i j 表示 1, i 行, 1, j 列包含的这个矩阵的数据和

处理方法: dp i j = dp i - 1 j + dp i j - 1 - dp i - 1 j - 1 + arr i j

2、使用前缀和矩阵

x1, y1 ~ x2, y2 = dp x2, y2 - dp x1- 1 y2 - dp x2 y2 - 1 + dp x1 y1

二维数组前缀和的建立和使用图解

相关推荐
2401_85415155几秒前
嵌入式传感器驱动开发深度解析——从 I2C/SPI 驱动到数据融合算法
驱动开发·算法
cpp_25012 分钟前
P6625 [省选联考 2020 B 卷] 卡牌游戏
数据结构·c++·算法·前缀和·贪心·洛谷题解·省选
起予者汝也27 分钟前
Python 数据结构
开发语言·数据结构·python
石一峰69932 分钟前
驱动:私有数据为什么要在三个地方各挂一遍?
数据库·python·算法
卡提西亚2 小时前
leetcode-179. 最大数
python·算法
浩瀚地学2 小时前
【面试算法笔记】0302-哈希表-哈希表实现
java·经验分享·笔记·算法·面试
ECT-OS-JiuHuaShan2 小时前
严格证明:还原论是ASCII,整体论是UTF-8的历史意义和价值
开发语言·人工智能·算法·量子计算
ShallWeL2 小时前
【机器学习】(19)—— 数据特性与标签
人工智能·算法·机器学习
Frostnova丶2 小时前
(17)LeetCode 41. 缺失的第一个正数
数据结构·算法·leetcode