Leetcode53. 最大子数组和(HOT100)

链接

我的解法:

cpp 复制代码
class Solution {
public:
    int maxSubArray(vector<int>& nums) {
        int n = nums.size();
        int res = INT_MIN;
        vector<int> f(n+1,0);
        for(int i = 1;i<=n;i++){
            f[i] = max(f[i-1]+nums[i-1],nums[i-1]);
            res = max(res,f[i]);
        }
        return res;
    }
};

f[i]表示以nums[i]结尾的子数组的和的最大值。

对于前i个数,要求最大和,要么就是前i-1个数求出来的最大和,要么是第i个数本身就是这i个数中的最大和。


更好的解法:

cpp 复制代码
// class Solution {
// public:
//     int maxSubArray(vector<int>& nums) {
//         int res = INT_MIN;
//         for(int i = 0,last = 0;i<nums.size();i++){
//             last = max(nums[i],nums[i]+last);
//             res = max(res,last);
//         }
//         return res;

//     }
// };

空间复杂度是O(1)的,使用last来存储f[i-1],每次更新last。

相关推荐
寻寻觅觅☆4 小时前
东华OJ-基础题-106-大整数相加(C++)
开发语言·c++·算法
偷吃的耗子4 小时前
【CNN算法理解】:三、AlexNet 训练模块(附代码)
深度学习·算法·cnn
2013编程爱好者5 小时前
【C++】树的基础
数据结构·二叉树··二叉树的遍历
NEXT065 小时前
二叉搜索树(BST)
前端·数据结构·面试
化学在逃硬闯CS5 小时前
Leetcode1382. 将二叉搜索树变平衡
数据结构·算法
ceclar1235 小时前
C++使用format
开发语言·c++·算法
Gofarlic_OMS5 小时前
科学计算领域MATLAB许可证管理工具对比推荐
运维·开发语言·算法·matlab·自动化
夏鹏今天学习了吗6 小时前
【LeetCode热题100(100/100)】数据流的中位数
算法·leetcode·职场和发展
忙什么果6 小时前
上位机、下位机、FPGA、算法放在哪层合适?
算法·fpga开发
董董灿是个攻城狮6 小时前
AI 视觉连载4:YUV 的图像表示
算法