【LeetCode】剑指 Offer 42. 连续子数组的最大和
【LeetCode】剑指 Offer 42. 连续子数组的最大和
文章目录
- 【LeetCode】剑指 Offer 42. 连续子数组的最大和
- 一、动态规划
一、动态规划
状态定义
设动态规划列表 dp,dp[i] 代表以元素 nums[i] 为结尾的连续子数组最大和
- 为何定义最大和 dp[i] 中必须包含元素 nums[i]:保证 dp[i] 递推到 dp[i+!] 的正确性;如果不包含 nums[i],递推时则不满足题目的连续子数组要求
转移方程
若 dp[i-1] ≤ 0,说明 dp[i-1] 对 dp[i] 产生负贡献,即 dp[i-1] + nums[i] 还不如 nums[i] 本身大
- 当 dp[i-1] > 0 时:执行 dp[i] = dp[i-1] + nums[i];
- 当 dp[i-1] ≤ 0 时:执行 dp[i] = nums[i];
初始状态
dp[0] = nums[0],即以 nums[0] 结尾的连续子数组最大和为 nums[0]
返回值
返回 dp 列表中的最大值,代表全局最大值
class Solution {public int maxSubArray(int[] nums) {int res = nums[0];for(int i = 1; i < nums.length; i++) {nums[i] += Math.max(nums[i - 1], 0);res = Math.max(res, nums[i]);}return res;}
}
- 时间复杂度 O(n):线性遍历数组 nums 即可
- 空间复杂度 O(1):使用常数大小的额外空间
【LeetCode】剑指 Offer 42. 连续子数组的最大和相关推荐
- LeetCode -- 剑指 Offer 42. 连续子数组的最大和
剑指 Offer 42. 连续子数组的最大和 线性 DP 题. 针对于数组nums[i] 而言,以它为结尾的子数组分两种情况:(题目限制:必须是连续数组) num[i] 自身作为独立子数组:f[i] ...
- Leetcode 剑指 Offer 42. 连续子数组的最大和 (每日一题 20211014)
输入一个整型数组,数组中的一个或连续多个整数组成一个子数组.求所有子数组的和的最大值.要求时间复杂度为O(n).示例1:输入: nums = [-2,1,-3,4,-1,2,1,-5,4] 输出: 6 ...
- leetcode剑指 Offer 42. 连续子数组的最大和(动态规划)
输入一个整型数组,数组里有正数也有负数.数组中的一个或连续多个整数组成一个子数组.求所有子数组的和的最大值. 要求时间复杂度为O(n). 示例1: 输入: nums = [-2,1,-3,4,-1,2 ...
- 剑指 Offer 42. 连续子数组的最大和(官解)
14天阅读挑战赛 努力是为了不平庸~ 算法学习有些时候是枯燥的,这一次,让我们先人一步,趣学算法!欢迎记录下你的那些努力时刻(算法学习知识点/算法题解/遇到的算法bug/等等),在分享的同时加深对于算 ...
- 剑指 Offer 42. 连续子数组的最大和
摘要 剑指 Offer 42. 连续子数组的最大和 一. 动态规划分析 1.1 动态规划思路分析 假设nums数组的长度是n,下标从0到n−1.我们用 f(i)代表以第i个数结尾的连续子数组的最大和, ...
- 【最佳解法】剑指 Offer 42. 连续子数组的最大和
我是小张同学,立志用最简洁的代码做最高效的表达 思路:动态规划 假设nums\textit{nums}nums 数组的长度是 nnn,下标从 000 到 n−1n-1n−1. 我们用 f(i)f(i) ...
- 剑指 Offer 42. 连续子数组的最大和java
输入一个整型数组,数组中的一个或连续多个整数组成一个子数组.求所有子数组的和的最大值. 要求时间复杂度为O(n). 示例1: 输入: nums = [-2,1,-3,4,-1,2,1,-5,4] 输出 ...
- 【算法】剑指 Offer 42. 连续子数组的最大和 【重刷】
1.概述 输入一个整型数组,数组中的一个或连续多个整数组成一个子数组.求所有子数组的和的最大值. 要求时间复杂度为O(n). 示例1: 输入: nums = [-2,1,-3,4,-1,<
- 剑指offer:连续子数组的最大和
题目描述 小米2020届笔试题 HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学.今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很 ...
最新文章
- CentOS7上Mongodb安装、卸载
- Python入门100题 | 第021题
- spring-boot-maven-plugin插件的作用
- Python实现立方体纹理映射
- com.google.common.collect.Range 集合计算
- 关于Idea模块化部署web项目,Web Resource Directories作用
- vblog 的 前景展望
- 服务器CPU型号数字详解,一文读懂CPU的型号标识
- 域名转入需要经过“命名审核”状态
- JavaScript 导出 table 为 Excel 表格
- 如何去掉抖音短视频水印----全网最好用的去抖音视频水印方法
- SparkMlib 之随机森林及其案例
- [附源码]计算机毕业设计JAVA小说网站的设计与实现1
- C#ActiveX插件制作
- XSS(跨站脚本攻击)原理详解(内含攻击实例)
- 前端与移动开发----webAPI----BOM介绍,定时器
- jsp+servlet实现注册,登录等的案例
- 键盘上使用计算机重启,我终于找到了如何使用键盘和鼠标重新启动计算机
- QCC3040-QACT工具使用
- Data truncation: Truncated incorrect DOUBLE value错误的解决方案
热门文章
- python3打包成exe运行 无法定位程度输入点_Pyinstaller递归错误解决方案
- pytest-xdist分布式执行测试用例
- Git submodule 特性
- Code Pages Supported by Windows
- KlayGE C++代码风格指南英文版
- 【转】使用 F#、MapReduce 和 Windows Azure 分析日志文件
- android git项目管理,Android Studio中如何使用Git和Github来管理项目
- 安全的本质--理解CIA和AAA
- Linux策略路由--原理、配置和应用
- linux透明防火墙--br_netfilter