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

力扣:53. 最大子数组和

解题思路:

1.先把数组为空和数组的长度为1时的特殊情况分别开来。声明一个sum变量用于计算数组中的连续子数组的总和值 。在声明一个guo变量用于一种接收sum中的前i-1的总和。另一种接收sum中前i的总和,主要根据sum的值来判断是接收的哪一种。在声明一个guo变量用于接收最大和的连续子数组的值。

2.在遍历过程中要把sum分情况来进行赋值和更新。如果当前i-1的sum值小于o,为负数时就抛弃前i-1的sum值,把nums【i】的值复制给sum。如果当前i-1的sum值大于0,我们就要更新sum值来判断是前i-1的sum值大还是前i的sum值大。之后再来更新连续最大和。我写这题时我敢觉的思路有点抽向和奇特,一股脑的写下去,所以我不知道这个解法属于哪一类算法。

class Solution {public int maxSubArray(int[] nums) {//数组为空时if(nums.length<1){return 0;}//数组的长度为1时if(nums.length==1){return nums[0];}//计算数组中的连续子数组的总和值int sum=nums[0];//一种接收sum中的前i-1的总和。另一种接收sum中前i的总和。主要根据sum的值来判断是接收的哪一种。int guo=0;//接收最大和的连续子数组的值int max=nums[0];for(int i=1;i<nums.length;i++){//把前i-1的sum值赋值给guoguo=sum;//判断前i-1的sum值小于o,为负数时就抛弃前i-1的sum值if(sum<0){//把nums【i】的值复制给sumsum=nums[i];//来更新连续最大和max=Math.max(max,sum);continue;}//如果前i-1的sum值大于0,我们就要更新sum值来判断是前i-1的sum值大还是前i的sum值大sum+=nums[i];//判断是前i-1的sum值大还是前i的sum值大。括号中的guo为前i-1的zum值guo=Math.max(guo,sum);//来更新连续最大和max=Math.max(max,guo);}return max;}
}

动态规划解法;

1.先把数组为空和数组的长度为1时的特殊情况分别开来,之后声明一个dp数组表示下标为i时的连续最大和,初始化dp数组的值为nums[0],递推公式为dp[i]=Math.max(dp[i-1]+nums[i],nums[i]),

判断是前i的dp数组值大还是当前nums[i]的值大,赋值给dp数组dp[i]。最后来更新连续最大和

class Solution {public int maxSubArray(int[] nums) {//数组为空时if(nums.length<1){return 0;}//数组的长度为1时if(nums.length==1){return nums[0];}//声明dp数组,dp数组表示下标为i时的连续最大和int dp[]=new int [nums.length];//初始化dp数组dp[0]=nums[0];//接受最大和值int max=nums[0];//for循环遍历来进行推导后面的dp数组的值for(int i=1;i<nums.length;i++){//递推公式dp[i]=Math.max(dp[i-1]+nums[i],nums[i]);//判断最大值和对比最大值max=Math.max(dp[i],max);}return max;}
}

http://www.lryc.cn/news/299972.html

相关文章:

  • 幻兽帕鲁Palworld专用服务器CPU内存配置怎么选择?
  • 学习总结11
  • Hadoop运行环境搭建
  • CTFshow web(php命令执行59-67)
  • 03、全文检索 -- Solr -- Solr 身份验证配置(给 Solr 启动身份验证、添加用户、删除用户)
  • 怎么使用ChatGPT提高工作效率?
  • 【微服务】skywalking自定义告警规则使用详解
  • BUGKU-WEB 矛盾
  • 2024-02-11 Unity 编辑器开发之编辑器拓展2 —— 自定义窗口
  • Python 读取pdf文件
  • 人究其一生只是在通用智能模型基础上作微调和对齐
  • DS:二叉树的链式结构及实现
  • PhP+vue企业原材料采购系统_cxg0o
  • C++线程池
  • SpringCloud-Hystrix:服务熔断与服务降级
  • 浅谈Linux环境
  • Spring 用法学习总结(一)之基于 XML 注入属性
  • 免费软件推荐-开源免费批量离线图文识别(OCR)
  • 2 scala集合-元组和列表
  • Spring Boot开启SSL/Https进行交互。
  • 88.Go设计优雅的错误处理
  • Python4Delphi: Delphi 程序使用 Python 抓取网页
  • 编辑器Zed
  • Java的接口
  • 【计算机网络】计算机软件工程人工智能研究生复试资料整理
  • 【Network Management】AUTOSAR架构下CanNm User Data详解
  • 量子算法入门——2.线性代数与复数
  • 分别通过select、多进程、多线程实现一个并发服务器
  • 如何在 emacs 上开始使用 Tree-Sitter (archlinux)
  • FL Studio2024最新中文版有哪些其新功能特点?