当前位置:网站首页>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数组的匹配值的时间,大大提高效率!
边栏推荐
猜你喜欢

After four years of outsourcing, the autumn recruits finally landed

【正点原子STM32连载】第一章 本书学习方法 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1

抬升市场投资情绪,若羽臣是否还需“自身硬”?

OAK-FFC-4P全网首次测试
![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]

telnet远程登录aaa模式详解【华为eNSP】

去掉js代码文件所有注释

智汇华云 | 华云软件定义网络 DCI介绍

Fiddler(二)-手机抓包502错误解决方法

Apache Druid 实时分析数据库入门介绍
随机推荐
PD 源码分析- Checker: region 健康卫士
阿里云的数据库系统怎么升级更新的www.zgysffm.com怎么加快访问速度?
oracle sql multi-table query
从底层看 Redis 的五种数据类型
BFM模型和Landmarks可视化
华为od项目
蜜芽CEO刘楠:垂直电商黄金时代已落幕 坚定转型品牌之路
Detailed explanation of NAT/NAPT address translation (internal and external network communication) technology [Huawei eNSP]
DNS 查询原理详解—— 阮一峰的网络日志
DeLighT:深度和轻量化的Transformer
思想茶叶蛋 (Jul 31,2022)| 元宇宙(Metaverse)下了一枚什么样的蛋
grafana手册之可视化配置图表table
How Oracle for current library or certain library data on the same server number?
布局管理器
telnet远程登录aaa模式详解【华为eNSP】
.NET深入解析LINQ框架(五:IQueryable、IQueryProvider接口详解)
Could you please talk about how the website is accessed?[Interview questions in the web field]
下午14:00面试,14:08低着头出来了 ,问的实在是太...
MATLAB/Simulink快捷键
spark算子讲解