Kadane 算法:Leetcode 最大子数组

kadane 算法:leetcode 最大子数组

算法核心思想

我们可以从两个角度理解Kadane算法的核心:

算法步骤

算法使用两个变量:maxSummaxTillNow

maxSum:记录遍历过程中遇到的最大子数组和。maxTillNow:记录当前遍历位置为止的最大子数组和。 maxTillNow 会随着遍历不断更新,当遇到负数时可能变小,但 maxSum 始终保持最大值。

算法遍历数组:

算家云 算家云

高效、便捷的人工智能算力服务平台

算家云 37 查看详情 算家云 初始化 maxSum 为负无穷大,maxTillNow 为 0。遍历数组元素,将当前元素加到 maxTillNow 中。如果 maxTillNow 大于 maxSum,则更新 maxSum。如果 maxTillNow 小于 0,则将其重置为 0,表示从下一个元素开始重新计算子数组和。

算法复杂度

时间复杂度: 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;    }}

更多算法解决方案,请访问我的https://www.php.cn/link/19c768e48aca9308d1a11fe86157731fHub仓库:https://www.php.cn/link/19c768e48aca9308d1a11fe86157731fHub链接 LeetCode用户名:devn007

以上就是Kadane 算法:Leetcode 最大子数组的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/611450.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
仅总参数量0.1%、单GPU 15分钟完成微调,人类基因组基础模型NT登Nature子刊
上一篇 2025年11月11日 01:40:23
飞猪旅行怎么使用行程助手_飞猪旅行行程助手规划方法
下一篇 2025年11月11日 01:40:30

相关推荐

发表回复

登录后才能评论
关注微信