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;

}
};
相关推荐
云析赢指标公式网42 小时前
文华WH6布林轨道均线强弱共振指标公式
前端·算法
多弗朗皮卡丘2 小时前
数据结构4:链表(下)
c语言·数据结构·链表
luj_17682 小时前
一线一区一变破解人盯人防守密码
开发语言·网络·c++·经验分享·算法
广州山泉婚姻2 小时前
C/C++动态内存:堆内存的申请、使用与释放
c++·人工智能
Wang's Blog2 小时前
Java框架快速入门: Spring Security+OAuth2之字段验证与自定义验证注解实战
java·算法·spring
带多刺的玫瑰2 小时前
Leecode#29刷题之两数相除
java·python·算法
smj2302_796826523 小时前
解决leetcode第4017题数组中的峰值II
python·算法·leetcode
午彦琳3 小时前
2026.9.9
数据结构·算法·leetcode
luj_17683 小时前
中锋卡位与开放线博弈
c语言·开发语言·网络·经验分享·算法
Jackson_GJH3 小时前
日志_图解spdlog
开发语言·c++