【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. 连续子数组的最大和相关推荐

  1. LeetCode -- 剑指 Offer 42. 连续子数组的最大和

    剑指 Offer 42. 连续子数组的最大和 线性 DP 题. 针对于数组nums[i] 而言,以它为结尾的子数组分两种情况:(题目限制:必须是连续数组) num[i] 自身作为独立子数组:f[i] ...

  2. Leetcode 剑指 Offer 42. 连续子数组的最大和 (每日一题 20211014)

    输入一个整型数组,数组中的一个或连续多个整数组成一个子数组.求所有子数组的和的最大值.要求时间复杂度为O(n).示例1:输入: nums = [-2,1,-3,4,-1,2,1,-5,4] 输出: 6 ...

  3. leetcode剑指 Offer 42. 连续子数组的最大和(动态规划)

    输入一个整型数组,数组里有正数也有负数.数组中的一个或连续多个整数组成一个子数组.求所有子数组的和的最大值. 要求时间复杂度为O(n). 示例1: 输入: nums = [-2,1,-3,4,-1,2 ...

  4. 剑指 Offer 42. 连续子数组的最大和(官解)

    14天阅读挑战赛 努力是为了不平庸~ 算法学习有些时候是枯燥的,这一次,让我们先人一步,趣学算法!欢迎记录下你的那些努力时刻(算法学习知识点/算法题解/遇到的算法bug/等等),在分享的同时加深对于算 ...

  5. 剑指 Offer 42. 连续子数组的最大和

    摘要 剑指 Offer 42. 连续子数组的最大和 一. 动态规划分析 1.1 动态规划思路分析 假设nums数组的长度是n,下标从0到n−1.我们用 f(i)代表以第i个数结尾的连续子数组的最大和, ...

  6. 【最佳解法】剑指 Offer 42. 连续子数组的最大和

    我是小张同学,立志用最简洁的代码做最高效的表达 思路:动态规划 假设nums\textit{nums}nums 数组的长度是 nnn,下标从 000 到 n−1n-1n−1. 我们用 f(i)f(i) ...

  7. 剑指 Offer 42. 连续子数组的最大和java

    输入一个整型数组,数组中的一个或连续多个整数组成一个子数组.求所有子数组的和的最大值. 要求时间复杂度为O(n). 示例1: 输入: nums = [-2,1,-3,4,-1,2,1,-5,4] 输出 ...

  8. 【算法】剑指 Offer 42. 连续子数组的最大和 【重刷】

    1.概述 输入一个整型数组,数组中的一个或连续多个整数组成一个子数组.求所有子数组的和的最大值. 要求时间复杂度为O(n). 示例1: 输入: nums = [-2,1,-3,4,-1,<

  9. 剑指offer:连续子数组的最大和

    题目描述 小米2020届笔试题 HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学.今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很 ...

最新文章

  1. CentOS7上Mongodb安装、卸载
  2. Python入门100题 | 第021题
  3. spring-boot-maven-plugin插件的作用
  4. Python实现立方体纹理映射
  5. com.google.common.collect.Range 集合计算
  6. 关于Idea模块化部署web项目,Web Resource Directories作用
  7. vblog 的 前景展望
  8. 服务器CPU型号数字详解,一文读懂CPU的型号标识
  9. 域名转入需要经过“命名审核”状态
  10. JavaScript 导出 table 为 Excel 表格
  11. 如何去掉抖音短视频水印----全网最好用的去抖音视频水印方法
  12. SparkMlib 之随机森林及其案例
  13. [附源码]计算机毕业设计JAVA小说网站的设计与实现1
  14. C#ActiveX插件制作
  15. XSS(跨站脚本攻击)原理详解(内含攻击实例)
  16. 前端与移动开发----webAPI----BOM介绍,定时器
  17. jsp+servlet实现注册,登录等的案例
  18. 键盘上使用计算机重启,我终于找到了如何使用键盘和鼠标重新启动计算机
  19. QCC3040-QACT工具使用
  20. Data truncation: Truncated incorrect DOUBLE value错误的解决方案

热门文章

  1. python3打包成exe运行 无法定位程度输入点_Pyinstaller递归错误解决方案
  2. pytest-xdist分布式执行测试用例
  3. Git submodule 特性
  4. Code Pages Supported by Windows
  5. KlayGE C++代码风格指南英文版
  6. 【转】使用 F#、MapReduce 和 Windows Azure 分析日志文件
  7. android git项目管理,Android Studio中如何使用Git和Github来管理项目
  8. 安全的本质--理解CIA和AAA
  9. Linux策略路由--原理、配置和应用
  10. linux透明防火墙--br_netfilter