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

力扣52-最大子序和(java详细题解)

题目链接:https://leetcode.cn/problems/maximum-subarray/description/

前情提要:

因为本人最近都来刷贪心类的题目所以该题就默认用贪心方法来做。

贪心方法:局部最优推出全局最优。

如果一个题你觉得可以用局部最优推出全局最优,并且没有反例来反驳的话就可以用贪心来试试。

题目思路:

我们首先要找出局部最优。

该题是求最大的子数组和。

我们怎么知道他是最大的呢?

如果一个和它是负数,它加上另一个数,只会让这个数变的更小。

这显然是不行的,我们要求最大的子序和,并且这个子序是连续的。

所以当一个连续和为负数时,我们应该直接放弃前面的连续和,找下一个值。

但是这里要想一个极端状况,如果数组给的值全是负数,那么我们找最小的负数即可。

本题局部最优:当一个连续和为负数时,我们应该直接放弃前面的连续和,找下一个值。

全局最优,选取最大的连续和。

具体代码还有一些细节,我放在代码里面讲。

最终代码:

class Solution {public int maxSubArray(int[] nums) {//这里result必须是记录最小值 如果初始化为0,碰巧该数组全为负数,那么就不会更新result了。int result = Integer.MIN_VALUE;//sum记录连续和int sum = 0;//遍历每一个数for(int i = 0;i < nums.length;i ++){sum += nums[i];//result用来更新最大值if(sum > result)result = sum;//如果连续和为负数 那么后面加的数就会让后面的数更小//所以我们直接跳过负数的连续和,让下一个数作为连续和的开头 确定我们这个数组的起始位置//终止位置怎么确定 我们用result常量用来记录每次连续和加上的最大值 也就间接确认这个数组的起始位置了if(sum < 0){//当连续和为负数时,直接在本层循环值赋为0,那么下一层循环sum就等于他本身,也就到达下一数了sum = 0;}   }return result;}
}

这一篇博客就到这了,如果你有什么疑问和想法可以打在评论区,或者私信我。

我很乐意为你解答。那么我们下篇再见!

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • sql查询之“列命名问题“
  • Qdrant官方快速入门和教程简化版
  • RocketMQ第5集
  • Flutter ListView滑动
  • noexcept关键字
  • 【通俗理解】Transformer哈希机制——序列数据的情感搅拌机
  • 基于SpringBoot的财务管理系统
  • 学习记录:js算法(十八): 反转字符串中的单词
  • FLUX 1 将像 Stable Diffusion 一样完整支持ControlNet组件
  • 文本分析之关键词提取(TF-IDF算法)
  • 数据库sqlite3
  • 4.4 bps 拯救小哈
  • flannel,etcd,docker
  • LeetCode 热题100-39 对称二叉树
  • uniapp vue3安装 uview-plus3+
  • JS 中的深拷贝与浅拷贝
  • 《Java8实战》-第四章读书笔记(引入流Stream)
  • 【EOS】Cleos基础
  • 10个确保微服务与容器安全的最佳实践
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • Codepen 每日精选(2018-3-25)
  • egg(89)--egg之redis的发布和订阅
  • es6(二):字符串的扩展
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • js递归,无限分级树形折叠菜单
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • magento 货币换算
  • nginx 负载服务器优化
  • Vue ES6 Jade Scss Webpack Gulp
  • 力扣(LeetCode)22
  • 每个JavaScript开发人员应阅读的书【1】 - JavaScript: The Good Parts
  • 模型微调
  • 人脸识别最新开发经验demo
  • 删除表内多余的重复数据
  • 世界上最简单的无等待算法(getAndIncrement)
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 想使用 MongoDB ,你应该了解这8个方面!
  • mysql面试题分组并合并列
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • #C++ 智能指针 std::unique_ptr 、std::shared_ptr 和 std::weak_ptr
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • (1)Nginx简介和安装教程
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (已解决)报错:Could not load the Qt platform plugin “xcb“
  • (转)项目管理杂谈-我所期望的新人
  • .cn根服务器被攻击之后
  • .JPG图片,各种压缩率下的文件尺寸
  • .libPaths()设置包加载目录
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .net 8 发布了,试下微软最近强推的MAUI
  • .Net CF下精确的计时器
  • .NET Framework 3.5安装教程