力扣热门100题之最大子数组和
最优解法Kadane 算法一遍遍历核心思想遍历数组时维护当前最大和如果前面的和是负数只会拖累当前数直接抛弃前面否则把当前数加进去全程记录最大值完整代码实现class Solution { public int maxSubArray(int[] nums) { if(numsnull || nums.length 0){ return 0; } // 当前连续子数组的最大和 int currentMax nums[0]; // 全局最大和最终答案 int globalMax nums[0]; // 从第 2 个数开始遍历 for(int i 1;inums.length;i){ // 核心 // 如果 currentMax 是负数 → 抛弃前面从当前数重新开始 // 如果 currentMax 是正数 → 加上当前数继续延长子数组 currentMax Math.max(nums[i], currentMax nums[i]); // 更新全局最大值 globalMax Math.max(globalMax, currentMax); } return globalMax; } }最简单记忆口诀前面是负的就扔掉前面是正的就加上。全程记录最大值。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2487554.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!