LeetCode 53. 最大子序和(Maximum Subarray)

动态规划各类问题分析——LeetCode习题精讲 目录 1.动态规划问题分类 2.线性DP         一维数组         二维坐标系         01背包         完全背包         多重背包   阅读详情

第一次提交成功

class Solution {
public:
    int maxSubArray(vector<int>& nums) {
        if (nums.size() == 1) return nums[0];
        //
        int sum = -1;
        vector<int> submax;
        for (int i = 0; i < nums.size(); i++)
        {
            if (sum >= 0){
                sum = sum + nums[i];
                submax.push_back(sum);
            }
            else{
                sum = nums[i];
                submax.push_back(sum);
            }
        }
        int max = submax[0];
        for (int i = 1; i < submax.size(); i++) {
            if (max < submax[i]) max = submax[i];
        }
        return max;
    }
};

这里我的思路是包含当前nums[i]的连续子数组的最大和(按序号只算i左边的),所以当前一个nums[i-1]处的最大值是负数时,nums[i]处的最大值就是nums[i]本身,当nums[i-1]处的最大值大于零,nums[i]处的最大值就是sum + nums[i]

对于nums中的第一个元素nums[0],我利用初始sum = -1,在循环中进入else把第一个位置最大值修改为nums[i]

第二次尝试:

其实对于上面的第二个循环并不必要,完全可以在第一个中进行。

class Solution {
public:
    int maxSubArray(vector<int>& nums) {
        if (nums.size() == 1) return nums[0];
        //
        int max = nums[0]; 
        int sum = -1;
        for (int i = 0; i < nums.size(); i++)
        {
            if (sum >= 0){
                sum = sum + nums[i];
            }
            else{
                sum = nums[i];
            }
            if (sum > max) max = sum;
        }
        return max;
    }
};

虽然这个sum初始化为-1看起来很巧妙,但是却有一点本末倒置,毕竟这是一个求和问题,sum初始化为0要更易于理解。

第三次尝试:先加为敬!

class Solution {
public:
    int maxSubArray(vector<int>& nums) {
        int max = nums[0]; 
        int sum = 0;
        for (int i = 0; i < nums.size(); i++)
        {
            sum += nums[i];
            if (sum > max) max = sum;
            if (sum < 0) sum = 0;
        }
        return max;
    }
};

判断只有一个元素也是多余的!顶多判断一个空数组,但是题目中说了至少有一个值。

安信可TB蓝牙模组系列 实战Ble Mesh智能照明系统搭建 本文详细介绍了如何使用安信可TB蓝牙模组系列搭建Ble Mesh智能照明系统。从硬件准备、固件烧录到手机APP组网全流程,提供了实战步骤和优化建议,特别适合智能家居开发者入门。Ble Mesh的自组网能力解决了蓝牙传输距离限制,实现全屋灯光智能控制。 阅读详情

相关推荐

Win11+VSCode+TeXLive:学术党必备的LaTeX环境配置避坑指南(2024最新版)

本文详细介绍了如何在Windows 11系统下,通过VSCode编辑器与TeXLive发行版配置高效的LaTeX学术写作环境。针对国内用户常见的镜像下载慢、插件配置复杂等问题,提供了优化方案和避坑指南,帮助科研人员和学生快速搭建流畅的学术写作工作流。

plum99的博客 619

leetCode 53.最大子数和 图解 + 贪心算法/动态规划+优化

由于前面已经计算过包括i = 1之前的最大连续子序列和,并且将值保存在 dp[1] 里,所以count = dp[1] + (-3) = 1 + (-3) = -2,接着在count 和 nums[2] = -3中选取最大值,即。发现 count < nums[3],这时候取最大值就可以让dp[3] = nums[3],表示接下来,可以调整起点,让 i = 3 为起点。count = (-2) + 1 = -1,在count 和 nums[1] = 1中选取最大值,即。贪心算法的巧妙需要慢慢体会!

呵呵哒!的博客 1939

A-Level经济例题解析及练习Opportunity Cost

例题Question: Opportunity CostYou are selling your 1996 Mustang.&nbsp; You have already spent $1000 on repairs.&nbsp;At the last minute, the transmission dies.&nbsp; You can pay $600 to have it repaired, or sell the car “as is.”In each of the fol

Alevel3的博客 744

LeetCode-53-最大子数组和-简单(贪心/分治/暴力求解/动态规划)

一 题目 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组 是数组中的一个连续部分。 二 示例及提示 示例 1: 输入:nums = [-2,1,-3,4,-1,2,1,-5,4] 输出:6 解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。 示例 2: 输入:nums = [1] 输出:1 示例 3: 输入:nums = [5,4,-1,7,8] 输出:23 提示: 1 <= nums.lengt...

哼 1195

CORS(跨域资源共享)漏洞解决方法

最近,测试环境上的项目被360测试人员检测出来有一个CORS漏洞,以下记录下漏洞问题与解决方法。 一、低危漏洞:CORS漏洞问题 测试人员访问某个url,将请求头中的Origin字段修改为任意值,结果仍然能获得正确的响应报文,就说明有CORS漏洞。 当CORS的设置不正确时,就会带来安全问题;当响应头中的Access-Control-Allow-Origin设置为null或*时,表示信任任何域,这时候就可能引入安全问题。 修复方法是合理配置CORS,判断Origin是否合法;具体说就是不让在nginx或t

BHSZZY的博客 3万+

具身智能的边缘计算核心构成方案

摘要: 具身智能(Embodied Intelligence)依赖物理实体与环境交互,而边缘计算(Edge Computing)通过本地化数据处理降低延迟、提升实时性。两者结合的核心方案包含五层架构:传感器层采集环境数据,边缘处理单元执行本地计算,通信模块实现低延迟传输,决策引擎运行轻量AI模型,执行器接口转化动作为物理操作。该方案以“边缘优先”为原则,满足毫秒级响应(如延迟<50ms),同时优化能效(功耗降低30%)和隐私保护。适用于机器人、自动驾驶等场景,通过分层闭环设计确保在资源受限环境中的可靠

老郑的博客 810

C++ 最大子序和

题目: 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 示例 1: 输入:nums = [-2,1,-3,4,-1,2,1,-5,4] 输出:6 解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。 示例 2: 输入:nums = [1] 输出:1 示例 3: 输入:nums = [0] 输出:0 这道题确实没想明白。后来看的解析才知道的,先说说自己的思路,想到的是用for循环做,从第一个数字加到数组的最后一个数字,并用临时变量记录最长的

YiYeZhiNian的博客 1305

RAP 语义键:让 UUID 世界变得可读、可导航、可校验

RAP 语义键的核心价值与实现要点 语义键(Semantic Key)是 ABAP RAP 模型中连接技术实现与业务体验的关键设计:通过为实体指定一组业务可读的标识字段(如订单号、物料编码等),在保持技术主键(如UUID)不变的同时,显著提升用户界面的可读性和导航体验。 主要优势: 提升UI可读性:Fiori元素会突出显示语义键字段,帮助用户快速识别关键业务数据 改善导航体验:OData URL会使用可读的语义键而非技术ID,便于分享和排查问题 降低沟通成本:业务人员能准确引用有意义的业务标识而非技术ID

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 155

53. Maximum Subarray(最大子序列和,分而治之法)

题目; Given an integer array nums, find the contiguous subarray (containing at least one number) which has the largest sum and return its sum. Example: Input: [-2,1,-3,4,-1,2,1,-5,4], Output: 6 Explanat...

Hcaroline 359

Codex,Copilot 是什么

GitHub Copilot是什么 **GitHub Copilot** 是一款由 **GitHub** 和 **OpenAI** 合作开发的 **AI 代码辅助工具**,它基于 **OpenAI Codex 技术**,能够根据上下文自动生成代码建议,大幅提升编程效率

ZhangJiqun&191cm&85kg 6791

手把手教你学Simulink--基于Simulink的高增益DC-DC变换器仿真建模

特点高电压增益:可以在不使用变压器的情况下实现较大的电压升压比。适用于低电压源:如太阳能电池板、燃料电池等提供的低压直流电源。效率问题:设计时需特别注意提高效率,减少能量损失。挑战电路复杂性:通常涉及多个电感和电容,以及复杂的开关模式。元件选择:合适的元件参数对于达到理想性能至关重要。控制策略:确保高效稳定运行的同时,适应负载变化。首先明确要模拟的任务内容。实现特定的电压增益比(例如从24V升至380V)。根据预期的输入输出电压确定合适的电路拓扑和元件值。

MHD0815的博客 173

【leetcode】53. 最大子序和(Maximum Subarray)

题目描述 【leetcode】53. 最大子序和(Maximum Subarray) 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 第一次解答 思路: 暴力法。 遍历所有可能的组合,起始点i从0开始到nums.size()-1 遍历从所有起始点开始,到结束点j处的累加和,返回最大的那个。 执行次数=1+2+3+…+n,等差数列,所以O(...

Liber-coder的博客 177

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

LeetCode力扣 53. 最大子序和 Maximum Subarray 题解代码 JavaScript

https://leetcode-cn.com/problems/maximum-subarray/ /** * @param {number[]} nums * @return {number} */ var maxSubArray = function(nums) { var mV = nums[0]; var i,j,k = nums[0]; for(i=1;i<nums.length;++i) { if(k < 0)

Coding home - 漂流瓶jz 567

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Leetcode 53. Maximum Subarray 最大子序和

Leetcode 53. Maximum Subarray 最大子序和 标签: Leetcode 题目地址:https://leetcode-cn.com/problems/maximum-subarray/ 题目描述 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4],...

CoderWangSon 306

数学建模模型总结

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

Leetcode 53.最大子序和(Maximum Subarray)

Leetcode 53.最大子序和 1 题目描述(Leetcode题目链接)   给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 输入: [-2,1,-3,4,-1,2,1,-5,4], 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。 2 题解   本题可以使用动态规划来做,定义DP[i]DP[i]DP[i]为以第...

qq_39378221的博客 176

leetcode 53.最大子序和(maximum subarray)C语言

53.最大子序和(maximum subarray)C语言1.description2.solution 1.description https://leetcode-cn.com/problems/maximum-subarray/description/ 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4], 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。 进阶:

hsk6543210的博客 471

Leetcode: 53.Maximum Subarray 最大子序和

Maximum Subarray 最大子序和 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 输入: [-2,1,-3,4,-1,2,1,-5,4], 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。 class Solution { public: int maxSubArray(vector<i...

Coding 225

用Python刷LeetCode【53. 最大子序和(Maximum Subarray)】

嗯。。。过完春节了,开始捡起学习的进程(真香)。。。开始看mooc浙大的数据结构与算法(姥姥版) C++我之前稍微接触了一点点,也仅仅是学到函数部分,唉,刷题不易,要是能刷过PAT的顶级,估计离合格的程序员也不远了吧? 总之。。。。新的一年,新的作死! 第一种解法:豹腻解法2 class Solution: def maxSubArray(self, nums): ...

Aaron_7906的博客 326

LeetCode【#53】 Maximum Subarray(最大子序和)

题目链接: 点击跳转 题目: Given an integer arraynums, find the contiguous subarray(containing at least one number) which has the largest sum and return its sum. Example: Input: [-2,1,-3,4,-1,2,1,-5,4...

Mikchy的博客 384

【LeetCode】 53. Maximum Subarray 最大子序和(Easy)(JAVA)

【LeetCode】 53. Maximum Subarray 最大子序和(Easy)(JAVA) 题目地址: https://leetcode.com/problems/maximum-subarray/ 题目描述: Given an integer array nums, find the contiguous subarray (containing at least one number)...

qq_16927853的博客 265

LeetCode(53):最大子序和 Maximum Subarray(Java)

2019.6.17 #程序员笔试必备# LeetCode 从零单刷个人笔记整理(持续更新) 这是经典的数据结构与算法的入门题,也是我刷的第一道题,第一次打开了分治和DP的大门,原来算法是这么神奇的东西。 #数据结构与算法学习笔记#PTA4:分治算法求最大子列和(C/C++) #数据结构与算法学习笔记#PTA3:在线处理算法求最大子列和,并返回最大子列和头尾元素(C/C++)(2004年浙大计科考...

NJU_ChopinXBP的博客 394

Leetcode 53. Maximum Subarray 最大子序和(C++)

题目描述: 给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4] 输出: 6 解释:连续子数组[4,-1,2,1] 的和最大,为6。 思路: 这是动态规划中一道非常经典的题目,虽然LeetCode上把这道题目难度定位Easy,但是我认为弄懂解决这道问题背后的思路,很多medium甚至hard都会迎刃而解。 首先最容易想到的依然是暴力法,两层...

flannery023的博客 299

LeetCode-53. Maximum Subarray(最大子序和)

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

三九_感冒灵的博客 175

LeetCode—53.最大子序和(Maximum Subarray)——分析及代码(C++)

LeetCode—53.最大子序和[Maximum Subarray]——分析及代码[C++]一、题目二、分析及代码1. 动态规划(1)思路(2)代码(简洁)(3)代码(高效)(4)结果三、其他 一、题目 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4], 输出: 6 解释: 连续...

江南土豆的博客 349

LeetCode53. Maximum Subarray(最大子序和)

最大子序和

grllery的博客 388
上一篇: LeetCode 20. 有效的括号(Valid Parentheses)
下一篇: LeetCode 70. 爬楼梯(Climbing Stairs)
君只见独不见
博客等级 码龄12年 99粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值