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

Recommend several methods that can directly translate PDF English documents
![一道[CSCCTF 2019 Qual]FlaskLight的详解再遇SSTI](/img/98/8b2359b7b99da9e50821cdaaf5e47d.png)
一道[CSCCTF 2019 Qual]FlaskLight的详解再遇SSTI

Since his 97, I roll but he...

Interview at 14:00 in the afternoon, I came out at 14:08 with my head down, asking too much...

菲沃泰科创板上市:市值123亿 宗坚赵静艳夫妇身价76亿

Wang Shuang's Assembly Language Chapter 4: The First Program

cannot import name ‘import_string‘ from ‘werkzeug‘【bug解决】

C Language Lectures from Scratch Part 6: Structure

recursive thinking
![[NOI Simulation Competition] Paper Tiger Game (Game Theory SG Function, Long Chain Division)](/img/b7/21f82453576b81e64dafbc3975125f.png)
[NOI Simulation Competition] Paper Tiger Game (Game Theory SG Function, Long Chain Division)
随机推荐
Unity3D 数据加密
Anton Paar安东帕密度计比重计维修DMA35性能参数
优炫数据库只有数据文件如何恢复
[NOI Simulation Competition] Paper Tiger Game (Game Theory SG Function, Long Chain Division)
命里有时终须有--记与TiDB的一次次擦肩而过
yolo x 跑起来,详细的不行,且内含800错误解决办法
线程和进程之间的区别
TiFlash 源码阅读(五) DeltaTree 存储引擎设计及实现分析 - Part 2
Shared_preload_libraries cause many syntaxes not supported
加降息与BTC流动性事件策略研究
抬升市场投资情绪,若羽臣是否还需“自身硬”?
How Oracle for current library or certain library data on the same server number?
redis分布式锁的实现
Linux Redis cache avalanche, breakdown, penetration
三层交换机配置MSTP协议详解【华为eNSP实验】
2022-08-02 分析RK817 输出32k clock PMIC_32KOUT_WIFI给WiFi模块 clock 注册devm_clk_hw_register
OAK-FFC-4P全网首次测试
将jpg图片转换成yuv420(NV12)数据文件
【正点原子STM32连载】第四章 STM32初体验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1
从底层看 Redis 的五种数据类型