Hot100:最大子数组和(Maximum Subarray)Kadane 一维 DP ACERS 解析
副标题 / 摘要 最大子数组和是最经典的一维 DP / 贪心题。本文用 ACERS 模板拆解 Kadane 算法,给出工程迁移思路与多语言可运行实现。 预计阅读时长:10~12 分钟 标签:Hot100、动态规划、贪心 SEO 关键词:Maximum Subarray, 最大子数组和, Kadane, 动态规划, O(n) 元描述:Kadane 一维 DP 求最大子数组和,含工程场景、复杂度分析与多语言代码。 目标读者 正在刷 Hot100 的学习者 想掌握“最大子段和”经典模板的中级开发者 需要做序列区间增益分析的工程师 背景 / 动机 最大子数组和不仅是 LeetCode 经典题,也常见于实际系统: 交易收益区间、指标提升区间、日志峰值段落、吞吐提升区间等都可以抽象为“最大连续收益”。 朴素 O(n^2) 枚举无法扩展,Kadane 给出 O(n) 的线性解。 核心概念 子数组:连续且非空的数组片段 状态转移:dp[i] 表示“以 i 结尾的最大子数组和” Kadane 思想:如果前缀和为负,直接丢弃,从当前位置重新开始 A — Algorithm(题目与算法) 题目还原 给你一个整数数组 nums,找出一个具有最大和的连续子数组(子数组至少包含一个元素),返回其最大和。 输入输出 名称 类型 描述 nums int[] 整数数组 返回 int 最大子数组和 示例 1(官方) nums = [-2,1,-3,4,-1,2,1,-5,4] 输出 = 6 解释:子数组 [4,-1,2,1] 和为 6 示例 2(官方) nums = [1] 输出 = 1 C — Concepts(核心思想) 关键公式 设 dp[i] 为以 i 结尾的最大子数组和: ...