前缀和算法模板

一维前缀和

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

一维前缀和算法模板

1、预处理出一个 dp 数组

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

dp数组,数组开 n + 1个空间,dp[i] 表示 [ 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 ]

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

相关推荐
gloomyfish2 分钟前
【最新技术】多模态零样本工业缺陷检测概述
人工智能·算法·计算机视觉
渡过晚枫3 分钟前
[蓝桥杯/java/算法]攻击次数
java·算法·蓝桥杯
风筝在晴天搁浅4 分钟前
hot100 3.无重复字符的最长子串
数据结构·算法·leetcode
liuyao_xianhui7 分钟前
寻找旋转排序数组中的最小值_优选算法(二分算法)
算法
努力学算法的蒟蒻11 分钟前
day37(12.18)——leetcode面试经典150
算法·leetcode·面试
超级种码19 分钟前
All In AI——DSPy框架,让智能体开发像模型训练一样
大数据·人工智能·算法
LYFlied22 分钟前
【每日算法】LeetCode 79. 单词搜索
前端·算法·leetcode·面试·职场和发展
Chrikk23 分钟前
C++20 Concepts 在算子库开发中的应用:从 SFINAE 到类型约束
人工智能·算法·c++20
炽烈小老头29 分钟前
【每天学习一点算法 2025/12/18】对称二叉树
学习·算法
蒙奇D索大34 分钟前
【数据结构】考研408 | 开放定址法精讲:连续探测的艺术与代价
数据结构·笔记·考研·改行学it