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;
    }
}
相关推荐
微尘hjx3 小时前
【ByteTrack 04】多轨迹算法ByteTrack改进点
算法·yolo·目标检测·目标跟踪·bytetrack·ultralytics·车跟踪
云和数据.ChenGuang3 小时前
Python 重写(Override)深度解析:从 MRO 到 super() 的完整机制
java·开发语言·人工智能·python·langchain·1024程序员节
摇滚侠3 小时前
《On Java 中文版 基础卷》阅读笔记 实现隐藏 12
java·数据库·笔记
路灯上の马陈4 小时前
二叉树的定义与性质
数据结构·二叉树·树结构·1024程序员节
silvamux_5 小时前
10款模型写种草笔记:可发布性、返工来源与成本数据缺口复盘
java·数据库·笔记
行走的陀螺仪6 小时前
【转型攻略】2026 年,后端 / 全栈工程师转 AI Agent 方向:能力地图、按周学习路线与面试要点
人工智能·面试·职场和发展
步行cgn6 小时前
StringHttpMessageConverter 详解:Spring MVC 中字符串读写的默认转换器
java·spring·mvc
摇滚侠6 小时前
《On Java 中文版 基础卷》阅读笔记 实现隐藏 11
java·笔记·python
小蒜学长6 小时前
基于Spring Boot+Vue3的在线医疗咨询系统的设计与实现(代码+数据库+LW)
java·spring boot·后端·在线问诊·在线医疗咨询系统