LeetCode [中等]最大子数组和-动态规划

53. 最大子数组和 - 力扣(LeetCode)

贪心算法:若当前指针所指元素之前的和小于0,则丢弃当前元素之前的数列

动态规划:若下一个元素大于0,则将其加到当前元素上

思路:

n 为数组长度,在 [0, n] 区间需要计算以每个中间元素 i 为结尾的最大和的非空子数组,并在这n个子数组中找到具有最大和的非空子数组。

  • 当 i > 0 时,以下标 i 结尾的子数组的最大和可以通过以下标 i - 1 结尾的子数组的最大和计算得到,因此可以使用动态规划计算以每个下标结尾的具有最大和的非空子数组。

动态规划的状态转移方程

dp[i]=max(dp[i−1]+nums[i],nums[i])

等价于 dp[i]=max⁡(dp[i−1],0)+nums[i]

代码

public class Solution {public int MaxSubArray(int[] nums) {int n = nums.Length;int[] dp = new int[n];dp[0] = nums[0];int maxSum = dp[0];for (int i = 1; i < n; i++) {dp[i] = Math.Max(dp[i - 1], 0) + nums[i];maxSum = Math.Max(maxSum, dp[i]);}return maxSum;}
}

时间复杂度和空间复杂度都是 O(n)。

优化空间O (1)

public class Solution {public int MaxSubArray(int[] nums) {int n = nums.Length;int sum = nums[0];int maxSum = sum;for (int i = 1; i < n; i++) {sum = Math.Max(sum, 0) + nums[i];maxSum = Math.Max(maxSum, sum);}return maxSum;}
}

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

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

相关文章

vue+electron问题汇总

1. Vue_Bug Failed to fetch extension, trying 4 more times 描述&#xff1a;项目启动时报错 解决&#xff1a;注释图片中内容 2. Module not found: Error: Can’t resolve ‘fs’ in 描述&#xff1a;项目启动报错 解决&#xff1a;vue.config.js中添加图中数据 3.导入…

PTA 7-231 买文具

某小学要购置文具。批发市场中 A 牌的铅笔卖 5 元一支&#xff0c;C 牌的铅笔卖 2 元一支&#xff0c;D 牌的简易铅笔卖1元2只&#xff08;捆绑销售&#xff0c;只能买偶数只&#xff09;。 如果想用n元买n支笔&#xff0c;问有多少种买法&#xff1f;&#xff08;题目保证 n …

【单片机】单片机裸机实现多任务调度

RTOS vs 裸机多任务调度 实时操作系统RTOS的优点不必多说了&#xff0c;但是对于一些简单的业务需求&#xff0c;移植一个操作系统显得非常麻烦&#xff0c;并且占用系统资源&#xff0c;此时就可以考虑利用SysTick裸机实现多任务调度。 单片机裸机实现多任务调度的优点有 1、…

Vue2虚拟列表,umy-ui封装

一、起因 1、需求&#xff1a; 由于业务需求在页面一次性展示较多数据&#xff0c;不低于上千&#xff0c;但是每条数据涉及样式较多&#xff0c;数据渲染过多就会导致页面卡顿 2、满足&#xff1a; 大量数据加载&#xff1b;表格功能&#xff1a;列显隐、列顺序调整、固定、筛…

基于Java SSM框架实现汽车在线销售系统项目【项目源码+论文说明】计算机毕业设计

基于java的SSM框架实现汽车在线销售系统演示 摘要 21世纪的今天&#xff0c;随着社会的不断发展与进步&#xff0c;人们对于信息科学化的认识&#xff0c;已由低层次向高层次发展&#xff0c;由原来的感性认识向理性认识提高&#xff0c;管理工作的重要性已逐渐被人们所认识&a…

3.2.1.0 发布!时间转换函数+BI 集成+视图正式上线!

自 3.0 版本发布以来&#xff0c;经过研发人员和社区用户的不断努力&#xff0c;TDengine 进行了大量更新&#xff0c;产品稳定性和易用性也在不断提升。近日&#xff0c;TDengine 3.2.1.0 成功发布&#xff0c;该版本带来了一些重大功能优化&#xff0c;这些优化将进一步提升 …

spark sql基于CBO的优化

前言 spark sql基于CBO的优化是建立在物理计划层面的&#xff0c;原理是计算出所有可能的物理执行计划&#xff0c;并挑选成代价最小的物理执行计划。对于执行计划可以去看我的另一篇博客RBO优化 CBO的话主要用来调整inner join所涉及表的顺序 使用CBO准备 搜集所需表和列的…

Leetcode每日一题学习训练——Python3版(从二叉搜索树到更大和树)

版本说明 当前版本号[20231204]。 版本修改说明20231204初版 目录 文章目录 版本说明目录从二叉搜索树到更大和树理解题目代码思路参考代码 原题可以点击此 1038. 从二叉搜索树到更大和树 前去练习。 从二叉搜索树到更大和树 给定一个二叉搜索树 root (BST)&#xff0c;请…

VUE2+THREE.JS 按照行动轨迹移动人物模型并相机视角跟随人物

按照行动轨迹移动人物模型并相机视角跟随人物 1. 初始化加载模型2. 开始移动模型3. 人物模型启动4. 暂停模型移动5. 重置模型位置6. 切换区域动画7. 摄像机追踪模型8. 移动模型位置9.动画执行 人物按照上一篇博客所设定的关键点位置&#xff0c;匀速移动 1. 初始化加载模型 //…

我的计算机专业之旅:激情、挑战与无尽可能性

标题&#xff1a;我的计算机专业之旅&#xff1a;激情、挑战与无尽可能性 引言&#xff1a; 回顾过去的三年&#xff0c;我深深感受到计算机专业给我带来的激情、挑战以及无尽的可能性。作为一名大三的计算机专业学生&#xff0c;我想分享一下当初选择这条专业之路的初衷和心…

短信验证码轰炸解决方案二(防止海外ip、限制ip、限制手机号次数解决)

1. 检查IP是否在黑名单中&#xff0c;如果是则终止访问。 2. 检查手机号是否在黑名单中&#xff0c;如果是则终止访问。 3. 对于同一个IP&#xff0c;限制访问次数&#xff0c;如果超过限制则终止访问。 4. 对于同一个手机号&#xff0c;限制访问次数&#xff0c;如果超过限制则…

〖大前端 - 基础入门三大核心之JS篇㊸〗- DOM事件对象的方法

说明&#xff1a;该文属于 大前端全栈架构白宝书专栏&#xff0c;目前阶段免费&#xff0c;如需要项目实战或者是体系化资源&#xff0c;文末名片加V&#xff01;作者&#xff1a;不渴望力量的哈士奇(哈哥)&#xff0c;十余年工作经验, 从事过全栈研发、产品经理等工作&#xf…

高铁乘务员简历12篇

想要在高铁乘务员职位的求职中脱颖而出&#xff0c;顺利进入心仪的高铁乘务员岗位&#xff0c;以下是12篇专业的高铁乘务员个人简历案例&#xff0c;无论您是初入行业的新手还是有一定工作经验的乘务员参考这些简历&#xff0c;让您的求职之路更加顺畅。 高铁乘务员简历模板下…

3D Gaussian Splatting的使用

3D Gaussian Splatting的使用 1 下载与安装2 准备场景样本2.1 准备场景照片2.1.1 采集图片2.1.2 生成相机位姿 3 训练4 展示 1 下载与安装 今年SIGGRAPH最佳论文&#xff0c;学习了一下&#xff0c;果然厉害&#xff0c;具体论文原理就不说了&#xff0c;一搜都有&#xff0c;…

2023年12月5日历史上的今天大事件早读

1377年12月05日明朝第二位皇帝明惠帝朱允炆出生 1408年12月05日金帐汗国军队在亦敌忽率领下进抵莫斯科城下 1492年12月05日欧洲航海家哥伦布第一次踏上伊斯帕尼奥拉岛 1791年12月05日音乐神童莫扎特逝世 1847年12月05日广州黄竹岐人民抗英 1870年12月05日法国著名作家大仲…

第N个泰波那锲数

1.题目解析 动态规划算法原理 1.状态表示 2.状态转移方程 3.初始化 4.填表顺序 为了填写当前状态的时候&#xff0c;所需要的状态已经计算过了&#xff01;&#xff01;&#xff01; 5.返回值 题目要求 状态表示 ------------------------------------------------------…

vant4 van-tabs和van-popup一起使用样式错误

问题现象&#xff1a;van-cell的宽度被撑出屏幕宽度 今天做一个tab切换页面&#xff0c;偶然发现这个问题&#xff0c;记录一下。 问题背景&#xff1a; 前提是已经定了框架vue3vant4 那么做tab页面首先是用到了van-tabs&#xff0c;然后很自然的给它加了animated属性&#xff…

Cannot read properties of null (reading ‘setAttribute‘)

做项目时候&#xff0c;总是报这个错&#xff0c;参考如下链接解决问题&#xff0c;在此记录下&#xff0c;防止忘记。 报错 Uncaught TypeError: Cannot read properties of null (reading ‘setAttribute‘)_三水木雨的博客-CSDN博客

【C/PTA —— 14.结构体1(课外实践)】

C/PTA —— 14.结构体1&#xff08;课外实践&#xff09; 一.函数题6-1 选队长6-2 按等级统计学生成绩6-3 学生成绩比高低6-4 综合成绩6-5 利用“选择排序算法“对结构体数组进行排序6-6 结构体的最值6-7 复数相乘运算 二.编程题7-5 一帮一7-6 考试座位号 一.函数题 6-1 选队长…

Git篇如何搭建自己的git仓库

搭建自己的Git仓库需要以下步骤&#xff1a; 安装Git&#xff1a;首先需要在你的计算机上安装Git。你可以从Git官方网站下载并安装适合你操作系统的版本。创建新的Git仓库&#xff1a;在命令行中输入以下命令来创建一个新的Git仓库&#xff1a; mkdir my_project cd my_proje…