java数据结构与算法刷题-----LeetCode53:最大子数组和

手持式激光测距仪全套方案 激光测距全套方案,包括原理图、源代码、PCB、BOM、光学部分资料,结构、特殊元件数据手册及供应商联系方式,提供调试技术文档。全套方案已成功打板验证,实现0.05~50m测量范围,精度在+/—1.5mm,激光波长635~650nm,功率《1mW。方案预留了TTL串口、RS485接口,可通过串口助手看到测量数据,可自行DIY或者商业开发。无论是电路小白,还是技术大拿,都能通过方案资料成功做出一套激光测距仪。 阅读详情
java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.youkuaiyun.com/grd_java/article/details/123063846

在这里插入图片描述

解题思路:时间复杂度O( n n n),空间复杂度O( 1 1 1)
  1. 走完全程,如果我和你在一起会变好,我们就一起走,否则不如分道扬镳。回顾我最光辉的时刻就是和不同的人在一起,变成更好的最长连续。
  2. 这道题典型的贪心题目,那么多人,和不同的人在一起,你可以获得很多,或者会失去很多。而我们想找到最大的方案。
  3. 如果当前已获得的连续数组是负数,后面遇到的数是正数,那么我们和当前获取的连续数组不如分道扬镳。和遇到的这个正数一起走。何必非要一起走向痛苦的牢笼呢?不如放下彼此,和新的人尝试迎接美好。
  4. 我们题目需要的结果是,我们走完全程后,最幸福的时光,而不是到了终点后的幸福值。

另外,这道题可以通过分治算法,不断找寻局部最优,但是需要额外空间(状态和递归),显然不适用这道题,没必要强行往这道题上套。

代码

在这里插入图片描述

class Solution {
    public int maxSubArray(int[] nums) {
        int prefix = 0,result = nums[0];//prefix是现在和我们一起走的人,result是我们现在获取的幸福值
        for (int i = 0; i < nums.length; i++) {
            //如果i元素加入我们可以更幸福,那么就让i加入,也就是选prefix+nums[i]
            //如果和prefix一起很痛苦,不如放弃prefix,和nums[i]一起迎接美好
            //也就是说,已有的连续数组prefix,如果加上nums[i],我们幸福感更好,就选prefix+nums[i]
            //如果prefix已经是拖累,nums[i]进来,也是拖累人家nums[i],不如和prefix分道扬镳
            prefix = Math.max(nums[i],prefix+nums[i]);
            //result,只保留我们一路上,获得过的最大幸福感
            result = Math.max(result,prefix);
        }
        return result;
    }
        /**
     * 动态规划O(n) 如果二维数组分析是下面这种梯形,大概率可以O(n^2)变O(n)
     * [-2,1,-3,4,-1,2,1,-5,4]
     *          -2   1  -3  4  -1   2   1  -5   4
     *  下标     1   2   3   4   5   6   7   8   9
     * -2 1     -2  -1  -4  0  -1  1    2  -3   1  
     *  1 2          1  -2  2  1   3    4  -1   3
     * -3 3             -3  1  0   2    3   -2  2
     *  4 4                 4  3   5    6   -1  3
     * -1 5                    -1  1    2   -3  1
     *  2 6                        2    3   -2  2
     *  1 7                             1   -4  0
     * -5 8                                 -5  -1
     *  4 9                                     4
     *
     *  我们发现,是一个倒三角形状,
     *  这样的一般是不用额外的空间的
     *  可以看见,下标为1时,多出来的元素是-2
     *  下标为2时,多出来的是1,因为1>-1,后面的和,都比下标为1的大 (下标为1,前两个元素作为前缀和为-1,下标为2,第二个元素为和,1)
     *  那么前缀不断在变化,那么我们可以直接获取,保留大的
     */
}
STMicroelectronics 系列:STM32G4 系列_(11).STM32G4系列编程基础 通过本文,我们学习了如何在 STM32CubeIDE 中搭建开发环境,创建新项目,配置 GPIO、定时器和 ADC 外设,并编写相应的代码示例。这些基础知识将帮助你快速上手 STM32G4 系列的编程。希望本文对你有所帮助,祝你编程愉快! 阅读详情

相关推荐

用示波器抓取同步Buck自举电容波形:从充电回路到SW节点振铃的完整分析

本文通过实测TI TPS54561和MPS MPQ4572同步Buck芯片,详细解析了自举电容在充电、维持和放电三个工作阶段的波形特征。重点揭示了电感泄放回路与充电回路重叠时,在SW节点引发的振铃现象及其产生机理,并提供了串联阻尼电阻等有效的工程抑制方法。文章结合示波器实测,为硬件工程师提供了从波形观测到问题调试的完整实践指南。

weixin_29276847的博客 374

53. 最大子数组和(Java) Leecode

解题思路: 动态规划问题,利用dp数组。 dp[ i ] 只与dp[i - 1] 有关。 所以要构建dp数组,再比大小。 这里有个优化方法,在构建dp数组的时候,就直接比较子数组大小。 class Solution { public int maxSubArray(int[] nums) { int n = nums.length; if(n == 0) return 0; //base case int dp_0 = nums[.

迪文的博客 1098

分子模拟入门教程 | 低调使用 建议收藏

该方法只需要原子的核电荷和少数模拟的环境参数作为输入,所有的性质都是通过求解薛定谔方程得到的,不需要使用任何经验参数。经典的原子水平的分子模拟已经成为提高我们对材料科学和生命系统中分子过程理解的最流行的方法之一。全原子模拟是一种非常强大的以原子分辨率呈现信息的方法,因为在原子模拟中,一个粒子代表一个特定的原子。随着计算机硬件和模拟技术的快速发展,分子模拟不仅可以解决基本的、常规的化学问题,还可以应用于各种复杂体系。然而,由于问题的复杂性以及严重依赖于现象的现实情况,最好是逐案确定合适的模拟方法。

pysonger的博客 786

53. 最大子数组和(力扣-java)

给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。(3)max默认最大增益为nums[0],将sum与max比较,较大的增益复制给max,最后返回max。位置数据是有增益的,如果没有增益直接pass,令sum = nums[i]输入:nums = [-2,1,-3,4,-1,2,1,-5,4]解释:连续子数组 [4,-1,2,1] 的和最大,为 6。(1)先用sum(起始为num[0])记录前。输入:nums = [5,4,-1,7,8]

qq_51866806的博客 221

Windows server Database 2025 安装 i225/i226 网卡驱动

Windows server Database 2025 安装 i225/i226 网卡驱动 windows这比坏得很,intel消费级网卡不准在服务器系统上安装。你要说他是异构不支持?他就纯粹恶心人。 之前已经安装过一次,但是今天database预览版一更新,又给我把网卡驱动杀了,气死,写一篇教程。 到这里就完成了,总之还是想辱骂windows,提供便捷的同时又人为制造困难,多少有点(隔壁linux内核直接自带全家桶了就一省心) 并且近年Intel的新U安装显卡驱动和普通声卡驱动都不会出声

低温热源的博客 1万+

28、基准剂量法:原理、应用与计算详解

本文详细介绍了基准剂量法(BMD)的原理、在监管机构中的应用以及具体的计算方法。内容涵盖样本量与BMD的关系、主要监管机构如EPA对BMD的应用、BMD的模型选择与数据拟合过程、拟合优度评估、下置信限(BMDL)计算,以及实验设计对BMD结果的影响。同时,还讨论了剂量指标和响应选择的关键问题,为理解和应用基准剂量法提供了全面的参考。

info6的博客 280

【LeetCode - Java】53. 最大子数组和 (简单 | 并不简单)

目录1. 题目描述2. 解题思路3. 代码实现3.1 O(n³)解法(卒 | 时间超限)3.2 O(n²)解法(卒 | 时间超限)3.3 动态规划3.4 分治法3.5 对比 1. 题目描述 2. 解题思路 这道题目看到的第一个瞬间就是想着用循环!暴力!整它!最外层循环是决定子数组的起始位置;中层循环是决定子数组的长度;最内层循环是用于把该子数组的数全部加起来;最后把这个累加值与历史最大值比较,完成全部循环则得到子数组累加的最大值了。这种解法很好理解,可是,时间超限。我也理解,毕竟这是立方级的时间复杂度了。

Beemo的博客 753

数美device_fingerprint、device_id、hmac生成

device_fingerprint、hmac、device_id参数分析与解读

吴秋霖的博客 2883

leetcode.53. 最大子数组和(java实现)----动态规划

leetcode.53. 最大子数组和(java实现)----动态规划

weixin_52665332的博客 256

STM32F4 Flash数据的保存和读取。

STM32F4 Flash数据的保存和读取。

张一西的博客 9216

PointNet++改进策略目录

后续我将如何使用文章中创新点加入的PointNet++中代码实现部分进行更新。

u012901740的博客 2198

最大子数组和(java)

最大子数组和

qq_67503717的博客 554

具身智能机器人算法控制研究进展综述

具身智能(Embodied Intelligence)作为人工智能与机器人学的交叉前沿领域,强调智能体通过物理身体与环境的持续交互涌现智能行为。近年来,随着基础模型(Foundation Models)、扩散策略(Diffusion Policy)、视觉-语言-动作(Vision-Language-Action, VLA)模型以及大规模机器人数据集(如Open X-Embodiment)的快速发展,具身智能机器人的算法控制范式正经历深刻变革。

VectorShift的博客 230

LeetCode 53. 最大子序和 动态规划

给定一个整数数组 `nums` ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 **示例:** ``` 输入: [-2,1,-3,4,-1,2,1,-5,4], 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。 ```

一起加油 5784

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

LeetCode算法刷题——53. 最大子数组和

本文介绍了使用前缀和和最小前缀思想求解最大子数组和的高效算法。该算法的核心在于:最大子数组和等于当前前缀和减去之前的最小前缀和。通过维护一个最小前缀和变量,我们可以在一次遍历中解决问题,时间复杂度O(n),空间复杂度O(1)。这种方法比暴力法的O(n²)和分治法的O(n log n)都要高效,是解决最大子数组和问题的最优解法。

2301_76925430的博客 1266

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

【LeetCode 热题 100】53. 最大子数组和——(解法一)前缀和

Problem:题目:给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组是数组中的一个连续部分。

最短的捷径就是绕远路,绕远路才是我的最短捷径。 969

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

力扣热门算法题 52. N 皇后 II,53. 最大子数组和,54. 螺旋矩阵

52. N 皇后 II,53. 最大子数组和,54. 螺旋矩阵,每题做详细思路梳理,配套Python&Java双语代码, 2024.03.20 可通过leetcode所有测试用例。​

引用原创内容标明出处即可 1337

一道题把我气笑了:) 力扣.53 最大子数组和 leetcode maximum-subarray

给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。DP 的优点是使用范围更加广泛,这如果是一个系列的题目,不断上难度,DP 也许可以成为一个模板。但是这里要如何优化呢?比如我们可买卖股票无限次数上点难度,增加一个限制,买卖的天数必须是连续的天数,怎么解?输入:nums = [-2,1,-3,4,-1,2,1,-5,4]看到连续子数组和,比较自然的是想到用前缀和来加速子数组和的计算。解释:连续子数组 [4,-1,2,1] 的和最大,为 6。

663

【LeetCode热题100精讲】Java实现「最大子数组和」:动态规划与分治法双解,深入剖析经典算法问题

答:递归调用栈的深度为树的高度,即 log₂(n),每层使用常数空间。动态规划是解决此问题的最优方法,时间 O(n),空间 O(1)分治法展示了区间合并的思想,为学习高级数据结构打下基础Kadane 算法是处理连续子数组优化问题的经典模板「最大子数组和」不仅是一道算法题,更是算法思维的体现:通过动态规划,将指数级暴力搜索优化为线性时间解法;通过分治法,展示了如何构建可扩展的解决方案。深刻理解动态规划的最优子结构;掌握 Kadane 算法的核心思想;在面试中从容应对类似问题。记住。

吾为热爱计科,致力于知识分享的践行者,此博客是我在这条道路上留下的足迹。 831

热题 100-53.最大子数组和

摘要:LeetCode第53题要求找出整数数组中具有最大和的连续子数组。采用动态规划思想,维护两个变量:当前累加值sum和最大结果ans。当sum>0时继续累加,否则重新赋值。示例代码演示了O(n)解法,核心在于比较和更新sum与ans的值。进阶挑战是使用分治法实现。典型示例如输入[-2,1,-3,4,-1,2,1,-5,4]时,最大子数组[4,-1,2,1]的和为6。(149字)

weixin_69759588的博客 430

Java实现 LeetCode 53 最大子序和

53. 最大子序和 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4], 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。 进阶: 如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。 class Solution { public...

南 墙 1万+

【刷题目录1】按标签刷LeetCode热题HOT100 java题解分类汇总

1.栈 2.堆 3.贪心算法 4.排序 5.位运算 6.树 7.深度优先搜索 8.广度优先搜索 9.并查集 10.图 11.设计

乾坤未定,你我皆是黑马 3466

每日一题:Leetcode-53 最大子数和

力扣题目解题思路java代码。

LIUCHANGSHUO的博客 420

代码随想录算法训练营Day31 | 455.分发饼干、376.摆动序列、53.最大子数组和

训练营第31天:455.分发饼干、376.摆动序列、53.最大子数组和

jiabao0520的博客 1347

力扣每日一练之数组上篇Day1

力扣每日一练之数组上篇Day1 🍕前面的话🥞 大家好!本篇文章将介绍2周搞定数据结构的题,来自力扣的217.存在重复元素和53.最大子序和,本文将以这两道题作为背景,介绍经典的数组排序以及动态规划,展示语言为java(博主学习语言为java)。今天呢,是博主开始刷力扣的第一天,如果有想要开始准备自己的算法面试的同学,可以跟着我的脚步一起,共同进步。大家都是并肩作战的伙伴,一起努力奋力前行,路漫漫其修远兮,吾将上下而求索,相信我们一定都可以拿到自己期望的offer,冲冲冲! 👩‍💻博客主页:京与旧铺的博客主

qq_46272491的博客 2084

leetcode刷题:53. 最大子序和(Java)

题目描述 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4] 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。 思路: 遍历数组,累加值赋给sum,sum的最大值赋给max。一旦sum<=0就代表之前所有的元素和对当前元素nums[i]没有增益效果,...

MistyWood的博客 189
上一篇: MySQL 数据存储和优化------主目录 ----(架构---索引---事务---锁---集群---性能---分库分表---实战---运维) 持续更新
下一篇: java数据结构与算法刷题-----LeetCode35:搜索插入位置
ydenergy_殷志鹏
博客等级 码龄7年 5887粉丝 543原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ydenergy_殷志鹏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值