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;

}
};
相关推荐
小O的算法实验室几秒前
2026年SEVC SCI2区,面向空地跨域无人集群的目标引导自适应路径规划方法,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进
Xの哲學22 分钟前
Linux MAC层实现机制深度剖析
linux·服务器·算法·架构·边缘计算
埃伊蟹黄面25 分钟前
算法 --- hash
数据结构·c++·算法·leetcode
ywwwwwwv39 分钟前
力扣139
算法·leetcode·职场和发展
黛色正浓1 小时前
leetCode-热题100-哈希合集(JavaScript)
javascript·leetcode·哈希算法
smj2302_796826521 小时前
解决leetcode第3777题使子字符串变交替的最少删除次数
python·算法·leetcode
fei_sun1 小时前
【数据结构】2025年真题
数据结构
我在人间贩卖青春1 小时前
线性表之队列
数据结构·队列
Tisfy1 小时前
LeetCode 2110.股票平滑下跌阶段的数目:数学(一次遍历)
数学·算法·leetcode·题解
1024小神1 小时前
swift中 列表、字典、集合、元祖 常用的方法
数据结构·算法·swift