当前位置:网站首页>leetcode动态规划经典例题——53.最大子数组和
leetcode动态规划经典例题——53.最大子数组和
2022-08-04 09:03:00 【你食不食油饼】
题目描述:

思路:最大子数组和,要求我们找出一个具有最大和的连续数组,显而易见就是一道动态规划题,我们先找出dp[i]的规律;
题目要求具有最大和连续数组,重点在于连续,就意味着我们dp[i]的值是不是和dp[i-1](前一个位置的连续最大和)息息相关:
- 当dp[i-1]>=0时,dp[i] = dp[i-1] + nums[i],
- 当dp[i-1]<0时,dp[i] = nums[i]
有了这个思路,我们写代码就很简单了:
public int maxSubArray(int[] nums) {
int[] dp = new int[nums.length];
int max = nums[0];
dp[0] = nums[0];
for(int i = 1;i < nums.length;i++){
dp[i] = dp[i-1] >=0 ? dp[i-1] + nums[i] : nums[i];
max = Math.max(max,dp[i]);
}
return max;
}此时空间复杂度O(n),但是不知道小伙伴们有没有发现,我们的dp[i]只用了一次,我们却创建了一整个dp数组,是不是很浪费空间,所以我们可以进行一个优化,用一个temp变量来代替dp数组
请看代码:
public int maxSubArray(int[] nums) {
int max = nums[0];
int temp = nums[0];
for (int i = 1; i < nums.length; i++) {
temp = temp > 0 ? nums[i] + temp : nums[i];
max = Math.max(max,temp);
}
return max;
}优化后空间复杂度O(1),而且还缩短了进入dp数组的匹配值的时间,大大提高效率!
边栏推荐
- 【正点原子STM32连载】第三章 开发环境搭建 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1
- 2022年制冷与空调设备运行操作特种作业证考试题库及模拟考试
- TCP的四次挥手
- 下午14:00面试,14:08低着头出来了 ,问的实在是太...
- ZbxTable 2.0 重磅发布!6大主要优化功能!
- 如何设计一个注册中心
- I am 37 this year, and I was rushed by a big factory to...
- 预测性维护学习之路
- GBsae 8 c database using an error, how to do?
- 94后字节P7晒出工资单:狠补了这个,真不错...
猜你喜欢

yolo x 跑起来,详细的不行,且内含800错误解决办法

预测性维护学习之路

Post-94 Byte P7 posted the salary slip: It's really good to make up for this...
![Detailed explanation of MSTP protocol configuration on Layer 3 switches [Huawei eNSP experiment]](/img/97/6c3662ef36b02bc42eec95abaa6bc5.png)
Detailed explanation of MSTP protocol configuration on Layer 3 switches [Huawei eNSP experiment]

【云驻共创】HCSD 大咖直播–就业指南

如何快速将Zabbix5.0升级至6.0?
![[Punctuality Atom STM32 Serial] Chapter 2 STM32 Introduction Excerpted from [Punctual Atom] MiniPro STM32H750 Development Guide_V1.1](/img/11/a97c9874a1c4b510e7ed9ec330a737.png)
[Punctuality Atom STM32 Serial] Chapter 2 STM32 Introduction Excerpted from [Punctual Atom] MiniPro STM32H750 Development Guide_V1.1

从零开始的tensorflow小白使用指北

我和 TiDB 的故事 | 缘份在,那就终是能相遇的

蘑菇书EasyRL学习笔记
随机推荐
张朝阳对话俞敏洪:谈宇宙、谈焦虑、谈创业、谈退休、谈人生
PD 源码分析- Checker: region 健康卫士
Thread类的基本使用。
B站回应HR称“核心用户都是Loser”、求职者是“白嫖党”:已被劝退
预测性维护学习之路
TiFlash 源码阅读(五) DeltaTree 存储引擎设计及实现分析 - Part 2
ShowMeAI —— Show u 三连
Explanation of spark operator
一道[CSCCTF 2019 Qual]FlaskLight的详解再遇SSTI
tcp连接的细节
我和 TiDB 的故事 | TiDB 对我不离不弃,我亦如此
如何快速将Zabbix5.0升级至6.0?
cannot import name 'import_string' from 'werkzeug' [bug solution]
【正点原子STM32连载】第四章 STM32初体验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1
sql在字段重复时 对某个字段根据最新时间取数
redis分布式锁的实现
区分惯性环节与延迟环节
MATLAB/Simulink快捷键
继承和static关键字
云函数实现网站自动化签到配置详解【Web函数/Nodejs/cookie】