LeetCode-最大子数组和

ops/2024/11/14 4:59:40/

每日一题

今天刷到的是一道利用动态规划解决的题目

题目要求

给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。

示例 1:

输入:nums = [-2,1,-3,4,-1,2,1,-5,4]
输出:6
解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。

示例 2:

输入:nums = [1]
输出:1

示例 3:

输入:nums = [5,4,-1,7,8]
输出:23

题目解析

我们用到一个dp[n]数组来表示从开始到n为止内最大的子数组和,dp[0]就是数组第一个数,随后开始遍历数组。

如果此时已经遍历得到的dp[i-1]是一个正数,那么无论当前的nums[i]是不是正数,都可以继续加上,因为如果nums[i]是正数,那正好可以继续当作最大值储存在dp中,如果是负数,dp[i]的值虽然减少了。但最大值仍然可以储存在dp[i-1]中,不会丢失,而且即使此时的nums[i]是负数,nums[i+1]可能是正数,二者加在一起有可能可以抵消变得更大。

那么如果此时已经遍历得到的dp[i-1]是一个负数,那证明一定不能再继续加了,因为什么数加上一个负数肯定会更小,所以此时的dp[i]就直接设为当前的nums[i]。

最后遍历数组结束,再找出dp数组中的最大值,就是我们最后要的答案。

代码实现

java">public class Solution {public int maxSubArray(int[] nums) {int len = nums.length;int[] dp = new int[len];dp[0] = nums[0];for (int i = 1; i < len; i++) {if (dp[i - 1] > 0) {dp[i] = dp[i - 1] + nums[i];} else {dp[i] = nums[i];}}int res = dp[0];for (int i = 1; i < len; i++) {res = Math.max(res, dp[i]);}return res;}
}


http://www.ppmy.cn/ops/8520.html

相关文章

「GO基础」目录

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

Meta Llama 3 简介

文章目录 要点我们对 Llama 3 的目标最先进的性能模型架构训练数据扩大预训练规模指令微调与 Llama 3 一起建造系统级责任方法大规模部署 Llama 3Llama 3 的下一步是什么&#xff1f;立即尝试 Meta Llama 3 本文翻译自&#xff1a;https://ai.meta.com/blog/meta-llama-3/ 要点…

spring boot中的标注@Component、@Service等

让我告诉你什么叫水货。 一、水货横行 一直以来&#xff0c;我对Spring Boot项目中的标注&#xff0c;像Component啦、Service啦、Configuration啦&#xff0c;甚至Autowired啦&#xff0c;等等&#xff0c;都似懂非懂。Autowired与Resource有什么区别也不清楚。 个中原因&a…

《星尘传说》游戏完整源码(源码+引擎+客户端+服务端+教程+工具),云盘下载

《星尘传说》是一款奇幻类大型多人在线角色扮演电脑客户端游戏&#xff0c;该游戏设置有两大阵营&#xff0c;六个国家以及22个职业&#xff0c;采用3D卡通风格&#xff0c; 有兴趣的&#xff0c;可以架设个外网&#xff0c;让大家一起玩。 《星尘传说》游戏完整源码&#xff0…

echart+map发散地图静态射线设置

世界地图或中国地图的射线功能 本案例是vue2echart4.9。实现上饶--纽约 和上饶--越南的两条线路 关键代码 map: world 其他关键代码都有注释&#xff0c;可以直接复制运行查看 <template><div><div id"chinaMapContainer" style"width: 100%;…

常见的软件架构模式

在软件开发过程中&#xff0c;软件架构模式是实现高质量、可扩展系统的关键。本文将介绍一些常见的软件架构模式&#xff0c;分析其优缺点和适用场景&#xff0c;从而帮助大家在实际项目中做出更明智的架构选择&#xff08;注意以下的架构模式相互之间并不一定互斥&#xff0c;…

在React中的函数组件和类组件——附带示例的对比

在React中&#xff0c;创建组件有两种主要方式&#xff1a;函数组件和类组件。每种方式都有自己的语法和用例&#xff0c;尽管随着React Hooks的引入&#xff0c;它们之间的差距已经显著缩小。但选择适当的组件类型对于构建高效和可维护的React应用程序仍然非常关键。 在本文中…

mysql常见语法操作笔记

1. 数据库的基本操作 1.1. MYSQL登录与退出 D:\phpstudy_pro\Extensions\MySQL5.7.26\bin 输入 mysql -uroot -proot -h127.0.0.1 退出的三种方法 mysql > exit; mysql > quit; mysql > \q; 1.2. MYSQL数据库的一些解释 注意&#xff1a;数据库就相当于文件夹 …