当前位置:网站首页>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数组的匹配值的时间,大大提高效率!
边栏推荐
- No module named 'flask_misaka' has been resolved [BUG solution]
- 大家好,请教一个问题啊,我们通过flinkcdc把Oracle数据同步到doris,目前的问题是,只
- Detailed explanation of switch link aggregation [Huawei eNSP]
- 2022年制冷与空调设备运行操作特种作业证考试题库及模拟考试
- GBsae 8c 数据库使用中报错,肿么办?
- Quick tips for getting out of a single
- 张朝阳对话俞敏洪:谈宇宙、谈焦虑、谈创业、谈退休、谈人生
- 学会 Arthas,让你 3 年经验掌握 5 年功力
- 获取cpu的核数
- 如何快速将Zabbix5.0升级至6.0?
猜你喜欢
三层交换机配置MSTP协议详解【华为eNSP实验】
预测性维护学习之路
2022-08-02 Analyze RK817 output 32k clock PMIC_32KOUT_WIFI to WiFi module clock register devm_clk_hw_register
cannot import name 'import_string' from 'werkzeug' [bug solution]
ISO14443A读卡流程(作为示例参考)
蜜芽CEO刘楠:垂直电商黄金时代已落幕 坚定转型品牌之路
递归思想
Yolov5 replaces the backbone network of "Megvii Lightweight Convolutional Neural Network ShuffleNetv2"
[NOI Simulation Competition] Paper Tiger Game (Game Theory SG Function, Long Chain Division)
Layer 3 Switch/Router OSPF Configuration Details [Huawei eNSP Experiment]
随机推荐
获取cpu的核数
ShuffleNet v2 network structure reproduction (Pytorch version)
spark算子讲解
并发编程之生产者和消费者问题
Anton Paar Anton Paar Density Meter Hydrometer Repair DMA35 Performance Parameters
The difference between character stream and byte stream
【云驻共创】HCSD 大咖直播–就业指南
TCP的四次挥手
Convert callback function to Flow
线程的状态
【正点原子STM32连载】第四章 STM32初体验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1
[Punctuality Atom STM32 Serial] Chapter 2 STM32 Introduction Excerpted from [Punctual Atom] MiniPro STM32H750 Development Guide_V1.1
yolo x 跑起来,详细的不行,且内含800错误解决办法
DeLighT:深度和轻量化的Transformer
Oracle怎么获取当前库或者同一台服务器上某几个库的数据总行数?
继承和static关键字
【论文笔记】Delving into the Estimation Shift of Batch Normalization in a Network
加降息与BTC流动性事件策略研究
【论文笔记】Dynamic Convolution: Attention over Convolution Kernels
layout manager