leetcode 53. 最大子数组和

题目如下

数据范围

复制代码
法一
暴力解法: 生成前缀和数组用于迅速判断得到从i到j的子数组和。
时间复杂度O(n方)因为数组很大这个解法虽然可以但是容易超时。
法二
令f(n)是以n为结尾的最大子数组和,其中f(n) = max(f(n - 1) + nums[n],f(n))
很容易想到设置一个数组用于存储每个f(i)但是我们每次循环只需要使用上一个值所以可以用pre变量来节省内存。

通过代码

cpp 复制代码
class Solution {
public:
  int maxSubArray(vector<int>& nums) {
        int sum = nums[0];int pre = 0;
        for(const auto &n:nums) {
                pre = max(pre + n,n);
                sum = max(pre,sum);
        }
    return sum;

}
};
相关推荐
承渊政道1 分钟前
C++学习之旅【C++类和对象(下)】
c++·学习·visual studio
枫叶丹48 分钟前
【Qt开发】Qt窗口(九) -> QFontDialog 字体对话框
c语言·开发语言·数据库·c++·qt
源代码•宸6 小时前
分布式缓存-GO(分布式算法之一致性哈希、缓存对外服务化)
开发语言·经验分享·分布式·后端·算法·缓存·golang
旖旎夜光7 小时前
多态(11)(下)
c++·学习
yongui478347 小时前
MATLAB的指纹识别系统实现
算法
高山上有一只小老虎7 小时前
翻之矩阵中的行
java·算法
yangpipi-7 小时前
《C++并发编程实战》 第4章 并发操作的同步
开发语言·c++
jghhh017 小时前
RINEX文件进行卫星导航解算
算法
Chance_to_win7 小时前
C++基础知识
c++
爱思德学术7 小时前
中国计算机学会(CCF)推荐学术会议-A(计算机科学理论):LICS 2026
算法·计算机理论·计算机逻辑