[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.length <= 105
  • -104 <= nums[i] <= 104

题目链接:
. - 力扣(LeetCode)

解题主要思想:

有了解过前缀和的话其实这道题很容易解决,我们只需要找到当前区间最大的前缀和和最小的前缀和(<=0)即可。

解题代码:

cpp 复制代码
class Solution {
public:
    int maxSubArray(vector<int>& nums) {
        int ret = INT_MIN;
        int min_pre_sum = 0;
        int pre_sum = 0;
        for (auto& x : nums) {
            pre_sum += x;
            ret = max(ret, pre_sum - min_pre_sum);
            min_pre_sum = min(pre_sum, min_pre_sum);
        }
        return ret; 
    }
};
相关推荐
StudyWinter5 分钟前
【c++】thread总结
开发语言·c++·算法
@小白鸽6 分钟前
匿名函数lambda
c++·匿名函数
饕餮怪程序猿11 分钟前
贪心算法经典应用:活动选择问题(C++实现)
c++·算法·贪心算法
Han.miracle13 分钟前
数据库圣经-分析 MySQL 事务隔离级别与并发问题
数据结构·mysql·事务
暗然而日章14 分钟前
C++基础:Stanford CS106L学习笔记 15 RAII&智能指针&构建C++工程
c++·笔记·学习
光羽隹衡19 分钟前
决策树项目——电信客户流失预测
算法·决策树·机器学习
TL滕20 分钟前
从0开始学算法——第二十一天(高级链表操作)
笔记·学习·算法
CoovallyAIHub20 分钟前
无人机低空视觉数据集全景解读:从单机感知到具身智能的跨越
深度学习·算法·计算机视觉
学编程就要猛20 分钟前
算法:1.移动零
java·算法
杜子不疼.21 分钟前
【LeetCode 35 & 69_二分查找】搜索插入位置 & x的平方根
算法·leetcode·职场和发展