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;
    }
}
相关推荐
XS03010621 分钟前
【无标题】
java·tomcat·maven·intellij-idea
陈皮波比茶38 分钟前
java日志框架
java
INGNIGHT41 分钟前
1908 · 布尔表达式求值(stack单调栈&dfs)
开发语言·c++·算法
笨笨饿44 分钟前
#121_图传中的H.364编码与MP4的联系
linux·运维·前端·单片机·嵌入式硬件·面试·职场和发展
thefool1122661 小时前
随机链表的复制
java
jvmind_dev1 小时前
SWT 堆外内存泄漏排查实录:一次 PNG 保存泄漏一张图,一行 g_free 治好
java·后端
CodeStats1 小时前
《源纹天书》第三百四十六章至第三百五十章:边界的扩张、跨宇宙通信的尝试、其他宇宙的回应、新网络的形成、宇宙网络的创始者!
java·源纹天书
lucas_AI1 小时前
把表格压成 64 个 token,长文档问答反而更准了:先找表,再看数
人工智能·深度学习·算法
Zzz 小生1 小时前
Lazy Theta*:把昂贵的视线检测留到“真正需要”时再做
人工智能·算法·贪心算法·推荐算法