当前位置: 首页 > 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启动不了,一直报错
  • 戴上XR头盔,五一假期在上海也能体验“登陆月球”
  • 十四届全国人大常委会举行第四十四次委员长会议
  • 马上评|什么才是地方文旅宣传的正确姿势
  • “五一”假期预计全社会跨区域人员流动量超14亿人次
  • 西班牙葡萄牙突发全国大停电,欧洲近年来最严重停电事故何以酿成
  • 俄乌战火不熄,特朗普在梵蒂冈与泽连斯基会晤后口风突变