53. 最大子数组和[中等]✅

53. 最大子数组和

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

思路: 采用 动态规划(贪心优化)

核心思想:

维护当前连续子数组的最大和,如果之前的和没有贡献,就重新开始。

具体过程:

  • sum 表示当前连续子数组的最大和。

  • 遍历数组:

    • 如果 sum > 0,说明前面的子数组有价值,继续累加当前元素。

    • 如果 sum <= 0,说明前面的和会拖累结果,从当前元素重新开始。

  • 每次更新最大答案 ans

时间复杂度: O(n)

空间复杂度: O(1)

复制代码
class Solution {
    public int maxSubArray(int[] nums) {
        int ans = nums[0];
        int sum = 0;
        for(int num: nums) {
            if(sum > 0) {
                sum += num;
            } else {
                sum = num;
            }
            ans = Math.max(ans, sum);
        }
        return ans;
    }
}
相关推荐
不会就选b1 小时前
算法日常・每日刷题--<贪心>14
算法
野生技术架构师2 小时前
2026 Java 面试全套总结,八股 + 场景 + AI 相关面试考点
java·人工智能·面试
香吧香3 小时前
java服务异常日志只打印异常类型,没有堆栈定位分析
java·jvm·异常
qq_2518364574 小时前
AI 疾病自查功能SpringbootAI项目实战 · 技术实现文档
java·ai·ai编程
mmmmath_34 小时前
LeetCode.541.反转字符串II
数据结构·算法·leetcode
Navigator_Z4 小时前
LeetCode //MySQL - 1251. Average Selling Price
c语言·算法·leetcode
逆境不可逃4 小时前
Pi Agent 学习笔记:对话太长以后,如何压缩上下文
java
MetaLite4 小时前
JDK 8~26 核心特性一览:从 Stream 到 Scoped Values
java
wno7044 小时前
Spring Boot WebFlux增删改查
java·spring boot·后端