当前位置: 首页 > article >正文

Leetcode53. 最大子数组和(HOT100)

链接

我的解法:

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个数中的最大和。



更好的解法:


// 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。 


 


http://www.kler.cn/a/411840.html

相关文章:

  • Windows下安装FreeSurfer教程
  • Http 请求协议
  • 计算(a+b)/c的值
  • Linux进程与资源管理
  • 44.扫雷第二部分、放置随机的雷,扫雷,炸死或成功 C语言
  • 自动化的内存管理技术之垃圾回收机制-JavaScript引用数据内存回收机制
  • numpy.digitize函数介绍
  • 缺失的第一个正数(java)
  • 挂载本地目录到k8s的pod实现持久化存储
  • [java] 什么是 Apache Felix
  • wp the_posts_pagination 与分类页面搭配使用
  • git-显示顺序与提交顺序不一致的问题
  • unity3d——基础篇2刷(Mathf练习题)
  • RabbitMQ的预取值详解
  • 泷羽sec-linux进阶
  • postman的简单使用
  • 【mac】终端左边太长处理,自定义显示名称(terminal路径显示特别长)
  • 前端小练习——星辰宇宙(JS没有上限!!!)
  • 51单片机从入门到精通:理论与实践指南(一)
  • Hadoop的MapReduce详解
  • 详细描述一下Elasticsearch更新和删除文档的过程?
  • 【Linux】Ubuntu:轻量级Xfce桌面及远程连接
  • 对比C++,Rust在内存安全上做的努力
  • shell数组 Linux分文件 make工具
  • 金铲铲S13双城之战自动拿牌助手
  • emotion2vec语音情感识别 - python 实现