力扣热门100题之最大子数组和

最优解法:Kadane 算法(一遍遍历)

核心思想

  • 遍历数组时,维护当前最大和
  • 如果前面的和是负数 ,只会拖累当前数,直接抛弃前面
  • 否则,把当前数加进去
  • 全程记录最大值

完整代码实现:

java 复制代码
class Solution {
    public int maxSubArray(int[] nums) {
        if(nums==null || nums.length == 0){
            return 0;
        }

        // 当前连续子数组的最大和
        int currentMax = nums[0];
        // 全局最大和(最终答案)
        int globalMax = nums[0];

        // 从第 2 个数开始遍历
        for(int i = 1;i<nums.length;i++){
            // 核心:
            // 如果 currentMax 是负数 → 抛弃前面,从当前数重新开始
            // 如果 currentMax 是正数 → 加上当前数,继续延长子数组
            currentMax = Math.max(nums[i], currentMax + nums[i]);

            // 更新全局最大值
            globalMax = Math.max(globalMax, currentMax);
        }
        return globalMax;
    }
}

最简单记忆口诀

前面是负的就扔掉,前面是正的就加上。 全程记录最大值。

相关推荐
小小龙学IT13 分钟前
C++ std::vector 底层实现深度解析:内存布局、扩容策略、移动语义与迭代器失效
开发语言·c++·算法
eBest数字化转型方案34 分钟前
从工程视角拆解冰柜资产管理:拍照识别 pipeline、纯净度算法与 IoT 选型踩坑
人工智能·物联网·算法
Interview Aid11236 分钟前
Roblox OA 面经|小游戏+编程双修,Coding 两题满分通过
算法
闲研随记1 小时前
【文献阅读 ICLR 2026】RL算法:Co-Rewarding
算法
青山木1 小时前
Hot 100 --- 最小栈
java·数据结构·算法·leetcode
疯狂打码的少年1 小时前
【数据结构】栈的应用:表达式求值(后缀表达式)
java·数据结构·笔记·算法
HiDev_1 小时前
【非标自动化】plc执行顺序问题、扫描周期问题
深度学习·算法·机器学习
高洁012 小时前
工信部教考中心证书-人工智能系列本系列
人工智能·python·深度学习·算法
陈王卜2 小时前
Reduce 算子优化笔记
算法
wabs6662 小时前
关于图论【最短路径之Bellman_ford 算法(判断负权回路)|卡码网95.城市间货物运输II的思考】
数据结构·算法·图论·bellman_ford算法·卡码网·判断负权回路