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;
    }
    };

相关推荐
淡海水2 小时前
07-04-并发-ConcurrentBag-T-工作窃取WorkStealing算法
开发语言·算法·c#·bag·concurrent·workstealing
leobertlan3 小时前
好玩系列:训练一个神经网络模型指导小孩玩游戏2-大局观教练
算法
Tisfy3 小时前
LeetCode 3876.构造奇偶一致的数组 II:三种情况分类讨论(其实还是脑筋急转弯)
算法·leetcode·题解·脑筋急转弯
乐迪信息4 小时前
智慧港口船舶AI算法实现在线状态监测
大数据·人工智能·深度学习·算法·计算机视觉
kiracrimson5 小时前
从缓存的角度看链表与线性表的差异
数据结构·链表·缓存
木井巳6 小时前
【BFS/DFS 解决 FloodFill 算法】太平洋大西洋水流问题
java·算法·leetcode·深度优先·广度优先·宽度优先·推荐算法
心抵鹊6 小时前
归并排序之翻转对(hard)
数据结构·算法
白山编程大哥6 小时前
Java 集合算法:从排序、查找到底层原理的实战指南
java·python·算法
shehuiyuelaiyuehao6 小时前
算法34,位运算符操作,总结
算法
Navigator_Z7 小时前
LeetCode //C - 1224. Maximum Equal Frequency
c语言·算法·leetcode