当前位置: 首页 > news >正文

最大子数组和(每日一题-中等)

动态规划解法:

动态规划通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。

对于本题来说,原问题是求解有最大和的连续子数组。

定义一个动态规划列表dp,dp[i]表示以元素nums[i]为结尾的连续子数组的最大和。

定义dp[i]的含义的时候,要求必须包含元素nums[i],这是因为,如果不包含这个元素的话,在由dp[i]推导dp[i+1]的时候不满足连续子数组的要求,就不连续了。

转移方程:

初始值::dp[0]=nums[0]

原问题的答案就是:dp数组中的最大值。

状态压缩:

还可以不用定义新数组,因为dp[i]只和dp[i-1]与nums[i]有关,因此可以把原数组nums当作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;}
}

上述代码中的res是用来保存答案的,dp数组直接用nums数组来表示的。

相关文章:

  • JS反混淆网站
  • 数据结构中的宝藏秘籍之广义表
  • 3个实用的脚本
  • 使用Lombok @Builder 收参报错提示没有无参构造方法的原因与解决办法
  • Zookeeper介绍与安装配置
  • conversation_template | conversation_actors | conversation_line_template
  • Yarn的安装及环境配置
  • 专精特新政策推动,B端UI设计如何赋能中小企业创新发展?
  • GCD算法的学习
  • MySQL内置函数:字符串函数,数值函数,日期函数,流程控制函数
  • 基于VS Code 为核心平台的python语言智能体开发平台搭建
  • Oracle 19c部署之RMP一键安装初始化(五)
  • 微前端框架QianKun
  • 开源AI守护每一杯------奶茶咖啡店视频安全系统的未来之力
  • 20250418 一个正定矩阵的引理
  • 算法-链表
  • Docker Image export and load and tag
  • Xcode16 调整 Provisioning Profiles 目录导致证书查不到
  • React 函数组件和类组件的区别
  • dify本地部署,docker-plugin_daemon-1启动不了,一直报错
  • 再现逆转!蒯曼击败伊藤美诚晋级澳门世界杯女单决赛
  • 许志强评《伐木》|伯恩哈德的文人共和国
  • 美肯塔基州长警告:关税或致美家庭年增数千美元支出
  • 东莞一初中生跑操时倒地身亡,家属质疑校方施救不力
  • 观察|药企竞逐千亿抗癌药赛道,AI有多大助力?
  • 《隐秘的角落》再次被翻拍,将有美剧版