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

leetcode53:最大子数组和

给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。

子数组 是数组中的一个连续部分。

示例 1:

输入:nums = [-2,1,-3,4,-1,2,1,-5,4]
输出:6
解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。
示例 2:

输入:nums = [1]
输出:1
示例 3:

输入:nums = [5,4,-1,7,8]
输出:23
提示:

1 <= nums.length <= 105
-104 <= nums[i] <= 104
进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的 分治法 求解。

Related Topics
数组
分治
动态规划

方法一:动态规划

遍历数组,使用一个数组max保存以当前元素结尾的最大值,分为以下两种情况:
(1)max[i - 1] >= 0,此时max[i] = max[i - 1] + nums[i];
(2)max[i - 1] < 0, 此时max[i] = nums[i];

class Solution {
    public int maxSubArray(int[] nums) {
        int[] max= new int[nums.length];
        max[0] = nums[0];
        int res = max[0];
        for (int i = 1; i < nums.length; i++) {
            if (max[i-1] >= 0) {
                max[i] = max[i - 1] + nums[i];
            } else {
                max[i] = nums[i];
            }

            res = Math.max(res, max[i]);
        }

        return res;
    }
}

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

相关文章:

  • JAVA-链表
  • NVR录像机汇聚管理EasyNVR多品牌NVR管理工具视频汇聚技术在智慧安防监控中的应用与优势
  • 数据库的隔离机制---对MySQL 默认隔离级别的理解
  • stdin文件流指针
  • java数据类型之间的转换|超详解
  • 风电电力系统低碳调度论文阅读第一期
  • Kotlin 基础语法
  • 【数据库运维】mysql备份恢复练习
  • 【nnunet】个人数据训练心得
  • STL容器篇之stack和queue
  • 数学建模在大数据与数据挖掘、复杂网络与系统建模方面的应用
  • 如何让 a == 1 a == 2 a == 3 成立
  • iptables防火墙详解
  • Linux系统【Centos7】设置防火墙教程
  • record 替代 lombok, 我觉得不行
  • 58-Map和Set练习-LeetCode692前k个高频单词
  • AIGC之Stable Diffusion 提示词学徒库
  • 「ML 实践篇」回归系统:房价中位数预测
  • 使用机器学习opencv看手相
  • 嵌入式学深度学习:1、Pytorch框架搭建
  • 暴刷 SQL 导航
  • 探索五大机器学习技术及其应用
  • SSM整合
  • spring框架注解(纯注解)
  • c++类和对象
  • 通信协议-IIC协议