LeetCode Hot Code——最大子数组和

给你一个整数数组 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.length <= 105

  • -104 <= nums[i] <= 104

    class Solution {
    public:
    int maxSubArray(vector& nums) {
    //保存最大和
    int ans = nums[0];
    //当前位置为结尾时最大子序列和
    int maxx = nums[0];
    //以每个位置为结尾时,最大子序列和
    for (int i = 1; i < nums.size(); i++)
    {
    //当前位置的上一个最大子序列和加上当前位置的值
    int tmp = maxx + nums[i];
    //两种情况:
    // tmp 大于当前位置的值,以当前位置为结尾时,最大的子序列为 tmp
    // tmp 小于当前位置的值,以当前位置为结尾时,最大的子序列为 nums[i]
    // 每次记录最大的 tmp,就是答案
    if (tmp > nums[i])
    {
    maxx = tmp;
    }
    else
    {
    maxx = nums[i];
    }
    ans = max(ans, maxx);
    }
    return ans;
    }
    };

相关推荐
生态学者9 小时前
Global Change Biology | 森林越“步调一致”,反而越怕干旱?树木生长与叶片活动的同步之谜
大数据·人工智能·算法·r语言·微信公众平台
lsswear9 小时前
Agent 框架新手入门与实战部署指南
大数据·人工智能·算法
学逆向的9 小时前
C 循环结构的执行效率分析
c语言·开发语言·数据结构·网络安全
Data analyse45611 小时前
rnweb 回放数据量太大怎么办?分片存储与断点续传的实现思路
前端·网络·算法·数据分析
Navigator_Z12 小时前
LeetCode //C - 1293. Shortest Path in a Grid with Obstacles Elimination
c语言·算法·leetcode
Nil20813 小时前
leetcode 64最小路径和
算法·leetcode·职场和发展
光影少年13 小时前
AI Agent、自动化与未来工作
人工智能·算法·架构
牧羊人.33313 小时前
计算机视觉基础 第16章|EigenFace,FisherFace,LBPH传统人脸识别算法
人工智能·算法·计算机视觉
jeo陽13 小时前
04-循环实战:素数、最大公约数、级数求和与枚举法
c语言·开发语言·数据结构
Nil20813 小时前
leetcode 72编辑距离
算法·leetcode·职场和发展