首页 > Java > java教程 > Kadane 算法:Leetcode 最大子数组

Kadane 算法:Leetcode 最大子数组

DDD
发布: 2025-01-11 08:12:42
原创
730 人浏览过

Kadane

直觉

我们可以基于两点方法建立直觉。

方法

我们将从两个变量 maxSum 和 maxTillNow 开始。

  • 第一个变量存储我们在数组中获得的总和的最大和。

  • 第二个变量存储直到当前索引为止达到的最大总和的值。由于数组有一个负值,这个值会波动,但是每当我们得到 maxSum

  • 我们必须处理的最后一种情况是,直到任何索引为止的最大总和达到零,即 maxTillNow

复杂

  • 时间复杂度:O(N)

  • 空间复杂度:O(1)

代码

class Solution {
    public int maxSubArray(int[] nums) {
        int maxSum = Integer.MIN_VALUE;
        int maxTillNow = 0;
        for(int i =0;i<nums.length;i++){
            maxTillNow+=nums[i];
            maxSum = Math.max(maxTillNow,maxSum);
            if(maxTillNow<0) maxTillNow = 0;
        }
        return maxSum;
    }
}
登录后复制

GitHub 存储库以获取更多解决方案:Git
Leetcode简介:Leetcode:devn007

以上是Kadane 算法:Leetcode 最大子数组的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板