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;

}
};
相关推荐
C雨后彩虹1 分钟前
最大数字问题
java·数据结构·算法·华为·面试
java修仙传5 分钟前
力扣hot100:搜索二维矩阵
算法·leetcode·矩阵
浅川.2512 分钟前
xtuoj 字符串计数
算法
天`南14 分钟前
【群智能算法改进】一种改进的金豺优化算法IGJO[1](动态折射反向学习、黄金正弦策略、自适应能量因子)【Matlab代码#94】
学习·算法·matlab
Han.miracle23 分钟前
数据结构与算法--006 和为s的两个数字(easy)
java·数据结构·算法·和为s的两个数字
AA陈超27 分钟前
LyraStarterGame 5.6 项目学习路径
c++·笔记·学习·lyra
水木姚姚32 分钟前
VSCode 调试 C++ 之 cin 输入
c++·windows·vscode·开发工具·调试
AuroraWanderll35 分钟前
C++类和对象--访问限定符与封装-类的实例化与对象模型-this指针(二)
c语言·开发语言·数据结构·c++·算法
一只小bit36 分钟前
Qt Widget 控件介绍:覆盖常用属性及API
开发语言·c++·qt·命令模式·cpp
月明长歌39 分钟前
【码道初阶】LeetCode 622:设计循环队列:警惕 Rear() 方法中的“幽灵数据”陷阱
java·算法·leetcode·职场和发展