力扣53. 最大子数组和(滑动窗口,动态规划)

Problem: 53. 最大子数组和

文章目录

  • 题目描述
  • 思路及解法
  • 复杂度
  • Code

题目描述

在这里插入图片描述在这里插入图片描述

思路及解法

思路1:滑动窗口

1.为求出最大连续的子数组和,我们逻辑上假设有一个窗口在原数组上滑动,
欲求出最大连续,则需要保证窗口中的所有元素和最起码大于0;
2.即当当前窗口中的元素值的和小于0时,直接将其窗口舍弃,并在当前位置重新开一个新的窗口;
3.在实际操作中我们可以直接利用一个值(sum)进行累加操作,并判断其正负性;同时再记录一个值maxSum用于求出最大的连续子数组和

思路2:动态规划

1.用一个数组dp记录以第 i i i个数结尾时的最大子数组和;
2.欲得出当前的最大子数组和,则需要比较*dp[i - 1] + nums[i]的值与nums[i]*的值谁更大;
3.即得出动态转移方程:dp[i] = max(dp[i - 1] + nums[i], nums[i])
4.求出dp数组中的最大值即可

复杂度

思路1:滑动窗口
时间复杂度:

O ( n ) O(n) O(n);其中 n n n为原数组 n u m s nums nums的大小

空间复杂度:

O ( 1 ) O(1) O(1)

思路2:动态规划
时间复杂度:

O ( n ) O(n) O(n)

空间复杂度:

O ( n ) O(n) O(n)

Code

思路1:滑动窗口

class Solution {
public:/*** Slider windows* @param nums Given array* @return int*/int maxSubArray(vector<int>& nums) {int n = nums.size();int maxSum = INT_MIN;int sum = 0;for (int i = 0; i < n; ++i)  {if (sum < 0) {sum = 0;}sum += nums[i];if (sum > maxSum) {maxSum = sum;}}return maxSum;}
};

思路2:动态规划

class Solution {
public:/*** Dynamic programing* @param nums Given arr* @return int*/int maxSubArray(vector<int>& nums) {int n = nums.size();vector<int> dp(n + 1);dp[0] = nums[0];for (int i = 1; i < n; ++i) {dp[i] = max(dp[i - 1] + nums[i], nums[i]);}int max = INT_MIN;for (int i = 0; i < n; ++i) {if (dp[i] > max) {max = dp[i];} }return max;}
};

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

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

相关文章

[自然语言处理|NLP] 文本分类与情感分析,数据预处理流程,包括了同义词替换和拼写纠正,以及使用NLTK库和TextBlob库进行标记化和情感分析(附代码)

[自然语言处理|NLP] 文本分类与情感分析,数据预处理流程,包括了同义词替换和拼写纠正,以及使用NLTK库和TextBlob库进行标记化和情感分析(附代码)。 自然语言处理(Natural Language Processing,简称NLP)是人工智能领域的一个重要分支,涉及了处理和理解人类语言的技术…

带你实现用自己域名打开Tomcat

文章目录 Tomcat1.1、Tomcat 下载1.2、Tomcat 文件图解1.3、 启动或关闭 Tomcat1.3.1、 启动1.3.2、 关闭程序2.1、 修改端口号2.2、修改主机名称Tomcat 1.1、Tomcat 下载 首先去Tomcat 官网下载找到我们需要下载的版本 1.2、To

Linux 服务器安装maven

1、压缩文件下载Maven – Download Apache Maven 2、解压 tar -xvf apache-maven-3.8.4-bin.tar.gz 3、配置环境变量 在/etc/profile中保存Maven的环境变量&#xff1a; export M2_HOME/opt/server/apache-maven-3.5.4 export PATH$PATH:$M2_HOME/bin 4、通过source生效文件 so…

第4节、电机多段转动【51单片机+L298N步进电机系列教程】

↑↑↑点击上方【目录】&#xff0c;查看本系列全部文章 摘要&#xff1a;本节介绍用控制步进电机三个主要参数角度、速度、方向&#xff0c;实现简单的步进电机多段控制 一、目标功能 输入多个目标角度&#xff0c;以及每个角度对应的速度&#xff0c;实现步进电机的多段多速…

“小手艺”有“大情怀”, 《青春手艺人》赋能乡村振兴,传承新时代文化

文化传承发展要坚持“守正创新”&#xff0c;以守正创新的正气和锐气&#xff0c;赓续历史文脉、谱写当代华章。中央广播电视总台农业农村节目中心推出的聚焦年轻手艺人故事的微纪录片《青春手艺人》&#xff0c;为守正创新的文化传承增添了新的鲜活的青春故事。节目积极响应二…

为 Spring Boot 项目配置 Logback 日志

关于 Logback 日志系统是一个线上项目必备的素质之一&#xff0c;代表性的日志框架 Log4j、SLF4J、Logback 这哥仨竟然是亲兄弟&#xff0c;他们有一个亲爹&#xff0c;那就是巨佬 Ceki Gulcu。 由于 Spring Boot 的默认日志框架选用的 Logback&#xff0c;再加上 Log4j2 之前…

【buuctf--九连环】

这题主要是记录一下新的隐写工具 steghide 用binwalk 看一下 jpg 图片,还是有不少东西&#xff0c;那么-e 提取一下实际上通过binwalk 提取就避免了伪加密的问题&#xff0c;详见BUUCTF-九连环_九连环 buuctf-CSDN博客 其中 qwe.zip为真加密&#xff0c;需要找出密码&#xff…

springboot158基于springboot的医院资源管理系统

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计&#xff0c;课程设计参考与学习用途。仅供学习参考&#xff0c; 不得用于商业或者非法用途&#xff0c;否则&#xff0c;一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…

MySQL 小技巧:利用 xtrabackup 完全备份,增量备份及还原

案例&#xff1a;利用 xtrabackup 8.0 完全备份,增量备份及还原 MySQL8.0 在面对海量数据时&#xff0c;我们无法做到每天全量备份&#xff0c;因此 只能每周做一次全量备份。 而每天的话则进行增量备份&#xff0c;确保数据安全。 注意点&#xff1a;MySQL 8.0.26 版本对应需要…

【开源】SpringBoot框架开发城市桥梁道路管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示四、核心代码4.1 查询城市桥梁4.2 新增城市桥梁4.3 编辑城市桥梁4.4 删除城市桥梁4.5 查询单个城市桥梁 五、免责说明 一、摘要 1.1 项目介绍 基于VueSpringBootMySQL的城市桥梁道路管理系统&#xff0c;支持…

第3节、电机定速转动【51单片机+L298N步进电机系列教程】

↑↑↑点击上方【目录】&#xff0c;查看本系列全部文章 摘要&#xff1a;本节介绍用定时器定时的方式&#xff0c;精准控制脉冲时间&#xff0c;从而控制步进电机速度。 一、计算过程 电机每一步的角速度等于走这一步所花费的时间&#xff0c;走一步角度等于步距角&#xff…

蓝桥杯嵌入式学习记录——LCD的使用

目录 一、前言 二、LCD代码的移植 三、LCD代码的调用 一、前言 前一篇文章已经简单记录了一下cubeMX软件的使用和LED的点亮&#xff0c;今天来记录一下LCD的使用。LCD的驱动代码有很多&#xff0c;但实际上在蓝桥杯的比赛中用起来非常简单&#xff0c;因为赛点会提供LCD的驱…

问题:媒体查询语法中, 可用设备名参数表示“文档打印或预览“的是 #媒体#媒体#其他

问题&#xff1a;媒体查询语法中, 可用设备名参数表示"文档打印或预览"的是 A、C.?screen B.?projection C、A.?print D.?speech 参考答案如图所示

探索设计模式的魅力:设计之美-揭秘设计模式、原则与UML的魔法

设计模式专栏&#xff1a;http://t.csdnimg.cn/U54zu 目录 一、引言 二、设计模式与设计原则 设计模式 设计原则 三、面向对象设计原则 四、UML&#xff08;统一建模语言&#xff09; 4.1 UML是什么 UML是一种语言 UML是一种建模语言 UML是一种图形化语言 4.2 UML有什么 4.…

2.6 假期作业

分布编译 -ESc iso 1.预处理:头文件展开&#xff0c;宏替换&#xff0c;删除注释&#xff0c;不会查找语法错误 例&#xff1a;gcc -E 1.c -o 1.i 2.编译&#xff1a;生成汇编文件&#xff0c;会查找语法错误 例&#xff1a;gcc -S 1.i -o 1.s 3.汇编&#xff1a;生成二…

64位Office API声明语句第115讲

跟我学VBA&#xff0c;我这里专注VBA, 授人以渔。我98年开始&#xff0c;从源码接触VBA已经20余年了&#xff0c;随着年龄的增长&#xff0c;越来越觉得有必要把这项技能传递给需要这项技术的职场人员。希望职场和数据打交道的朋友&#xff0c;都来学习VBA,利用VBA,起码可以提高…

黑马程序员-瑞吉外卖-day7

目录 1.做新建菜品里面的上传图片 1.1设置存储路径&#xff08;先是我们自己存到我们的本地&#xff09; 2.在controller目录下写代码 3.在过滤器放开这个路径的访问 4.访问localhost:8080/backend/page/demo/upload.html 1.做新建菜品里面的上传图片 1.1设置存储路径&…

系留无人机的发展与应用场景分析,系留旋翼无人机技术难点分析

传统无人机的局限 随着无人机民用市场的扩大&#xff0c;无人机的功能愈加多样化&#xff0c;被广泛应用于搜救、公共安全、农林、摄像娱乐等多领域。民用市场的扩大使传统无人机面临很多技术难题&#xff0c;诸如定位、通讯、交互技术等等&#xff0c;其中最主要的是续航问题…

LeetCode-第876题-链表的中间结点

1.题目描述 给你单链表的头结点 head &#xff0c;请你找出并返回链表的中间结点。如果有两个中间结点&#xff0c;则返回第二个中间结点。 2.样例描述 3.思路描述 创建两个快慢指针 slow , fast &#xff0c;起始共同指向头节点&#xff0c;slow 每次走一步&#xff0c;fas…

编译原理与技术(三)——语法分析(五)自底向上-LR分析

一、自顶向下的LL(1)与自底向上的LR &#xff08;一&#xff09;LL(1)非递归预测分析器及分析表 &#xff08;二&#xff09;LR分析器及分析表 二、LR分析 举个例子。 从上面不难看出&#xff0c;LR分析也是由分析表驱动的。那么关键在于构造LR分析表。