前缀和算法模板

news2024/12/27 12:53:13

一维前缀和

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

一维前缀和算法模板

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 ]

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

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1359832.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

主题-----读微信公众号

1.SOA 面向服务的架构(Service-Oriented Architecture,SOA)还没有一个公认的定义。许多组织从不同的角度和不同的侧面对 SOA 进行了描述,较为典型的有以下三个: (1)W3C 的定义:SOA 是…

机器学习库【03】:-NumPy-算术运算

一、说明 与常规数学一样,数组算术本质上是关于加法、减法、乘法和除法。在 中NumPy,此类操作是按元素执行的 [2]: NumPy 是 Numerical Python 的缩写,是 Python 生态系统中一个功能强大的库,它提供对大型多维数组和矩阵的支持,以及对这些数组进行操作的数学函数集合。Nu…

Guava Cache 异步刷新技巧,你值得拥有!

以下文章来源于勇哥Java实战 ,作者勇哥 Guava Cache是一款非常优秀的本地缓存框架。 这篇文章,我们聊聊如何使用 Guava Cache 异步刷新技巧带飞系统性能 。 1 经典配置 Guava Cache 的数据结构跟 JDK1.7 的 ConcurrentHashMap 类似,提供了基…

Springcloud alibab和dubbo有什么区别?

Spring Cloud Alibaba 和 Dubbo 都是为了简化企业级应用开发而生的框架,尤其是在分布式系统和微服务架构的背景下。 虽然他们在某些功能上有重叠,但各有侧重点和使用场景。 微服务架构图 首先介绍一下 Spring Cloud Alibaba: Spring Cloud …

【c语言】指针小结

一、指针是什么? 可以通过运算符&来取得变量实际保存的 起始地址 。 (这个地址是虚拟地址,并不是真正物理内存上的地址。) 数据类型 *标识符 &变量; int *pa &a; int *pa NULL; (NULL表示地址为0的内存空间&a…

Keras实现seq2seq

概述 Seq2Seq是一种深度学习模型,主要用于处理序列到序列的转换问题,如机器翻译、对话生成等。该模型主要由两个循环神经网络(RNN)组成,一个是编码器(Encoder),另一个是解码器…

gitlab 8.13.0 关闭注册功能

新版本基本都可以在网上找到关闭注册的教程,但是老版本会比较麻烦,可以通过如下路径在网页中设置(root 管理员登录) ​​​​​​http://ip:port/admin/application_settings 最后保存即可

C语言学习NO.11-字符函数strlen,strlen函数的使用,与三种strlen函数的模拟实现

&#xff08;一&#xff09;strlen函数的使用 strlen函数的演示 #include <stdio.h> #include <string.h>int main() {char arr1[] "abcdef";char arr2[] "good";printf("arr1 %d,arr2 %d",strlen(arr1),strlen(arr2));return …

阿里通义千问「全民舞王」,一张照片就能跳《科目三》,刷爆朋友圈

这两天看朋友圈、网上都在发这种跳舞的视频。只要上传一张全身照&#xff0c;就可以生成各种跳舞的视频。 比如前段时间火爆海底捞的《科目三》&#xff0c;还有《DJ慢摇》、《鬼步舞》、《兔子舞》、甚至还有咱《秧歌舞》。 先来一睹为快&#xff01; 阿里通义千问「全民舞王…

JS新手入门笔记整理:JS语法基础

变量与常量 变量 语法 var 变量名值&#xff1b; 1、在JavaScript中&#xff0c;给一个变量命名&#xff0c;需要遵循以下2个方面的原则&#xff1a; 变量由字母、下划线、$或数字组成&#xff0c;并且第一个字母必须是字母、下划线或$。变量不能是系统关键字和保留字。 2…

主浏览器优化之路2——Edge浏览器的卸载与旧版本的重新安装

Edge浏览器的卸载与旧版本的重新安装 引言开整寻找最年轻的她开始卸载原本的Edge工具下载后新版本的安装 结尾 引言 &#xff08;这个前奏有点长&#xff0c;但是其中有一些我的思考顿悟与标题的由来&#xff0c;望耐心&#xff09; 我在思考这个系列的时候 最让我陷入困得是…

电商要怎么学?企业如何进行数字化转型打破市场僵局?

电商要怎么学&#xff1f;企业如何进行数字化转型打破市场僵局&#xff1f; 电商的学习需要从多个方面入手&#xff0c;首先需要了解电商的基本概念和原理&#xff0c;包括电商平台的运营模式、商品推广、客户服务等。此外&#xff0c;还需要掌握电商平台的操作技能&#xff0c…

python 数据容器

数据容器概念 一个可以存储多个元素的python数据类型 python有的数据容器 list(列表) tuple(元组) str(字符串) set(集合) dct(字典) 列表 python的列表的数据类型可以是不同的 my_list ["1",123,True,[123,"3333",d,False]]for item in my_list:p…

kubectl常用命令(全局篇)

格式 -o [cmd] -o json|yaml|wide 如&#xff1a;输出json格式 kubectl get ns ingress-nginx -o json 获取基本信息get #查看集群基本信息 kubectl get cs|pods|nodes|ns|svc|rc|deployments kubectl get cs kubectl get pods kubectl get nodes kubectl get ns kubectl g…

【Linux Shell】8. test 命令

文章目录 【 1. 数值测试 】【 2. 字符串测试 】【 3. 文件测试 】 Shell中的 test 命令用于检查某个条件是否成立&#xff0c;它可以进行数值、字符和文件三个方面的测试。 【 1. 数值测试 】 参数作用-eq等于则为真-ne不等于则为真-gt大于则为真-ge大于等于则为真-lt小于则…

citeSpace保姆级安装使用教程

citeSpace保姆级安装使用教程 文章目录 citeSpace保姆级安装使用教程CiteSpace功能与参数区安装使用知网数据导出citespace数据导入结果 设置操作隐藏节点 CiteSpace功能与参数区 安装 citeSpace安装教程 citespace下载 网址&#xff1a;https://citespace.podia.com/ 安装之…

应用层网络协议

tags: [“计算机网络”] descripution: “学习应用层的一些常用协议” 网络协议&#xff1a;约定的信息传输的格式&#xff0c;如几个字节是消息头、消息头记录什么信息之类的&#xff1b;c/s架构&#xff1a;不一定是两台计算机&#xff0c;而是两个应用、两个端口工具&#…

【Java集合篇】HashMap、Hashtable 和 ConcurrentHashMap的区别

HashMap、Hashtable和ConcurrentHashMap的区别 ✔️ 三者区别✔️ 线程安全方面✔️继承关系方面✔️ 允不允许null值方面✔️为什么ConcurrentHashMap不允许null值? ✔️ 默认初始容量和扩容机制✔️遍历方式的内部实现上不同 ✔️ 三者区别 ✔️ 线程安全方面 HashMap是非线…

异步任务判断执行和重复使用实现类

主要是展示一下如何在书写异步任务判断的时候&#xff0c;如何根据返回值类型进行重复使用相同接口里面的不同实现类的方法 /*** 父类接口* **/ public interface Exceutor {String getTaskType();void excetuor(String s); }/*** 异步处理任务的任务类型** author yangziqian…

万界星空科技MES系统中的生产管理

MES系统能够帮助企业实现生产计划管理、生产过程控制、产品质量管理、车间库存管理、项目看板管理等&#xff0c;提高企业制造执行能力。 万界星空MES系统特点&#xff1a; 1. 采用强大数据采集引擎、整合数据采集渠道&#xff08;RFID、条码设备、PLC、Sensor、IPC、PC等&…