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。

相关推荐
被开发耽误的大厨3 小时前
1、==、equals、hashCode底层原理?重写场景?
算法·哈希算法
WolfGang0073213 小时前
代码随想录算法训练营 Day38 | 动态规划 part11
算法·动态规划
松☆4 小时前
C++ 算法竞赛题解:P13569 [CCPC 2024 重庆站] osu!mania —— 浮点数精度陷阱与 `eps` 的深度解析
开发语言·c++·算法
jr-create(•̀⌄•́)4 小时前
正则化和优化算法区别
pytorch·深度学习·神经网络·算法
li星野6 小时前
刷题:数组
数据结构·算法
tankeven6 小时前
HJ182 画展布置
c++·算法
CS_Zero8 小时前
无人机路径规划算法——EGO-planner建模总结—— EGO-planner 论文笔记(一)
论文阅读·算法·无人机
杰梵8 小时前
聚酯切片DSC热分析应用报告
人工智能·算法
@BangBang8 小时前
leetcode (4): 连通域/岛屿问题
算法·leetcode·深度优先