为了账号安全,请及时绑定邮箱和手机立即绑定

一分钟算法题:计算最大子数组

标签:
算法

题目描述:

给定一个整数数组,查找连续的最大和的子数组(至少包含一个数字)并返回其和。

题目举例:

给定输入:[-2,1,-9,4,-1,2,1,-8,4]
输出: 6

题目分析:

因为是求最大连续的和,所以只需要遍历一次就行。
每遍历到一个数,计算下当前连续和的最大值。

例如:
i=0, 当前连续最大值为: -2
i=1, a[1] 大呢?还是a[0]+a[1]大?取大者
若a[1] 大,取从i=1开始计算子串
若a[0]+a[1] 大, 继续计算连续最大子串。
只需O(n) 遍历即可。

代码:

class Solution {
    public int maxSubArray(int[] nums) {
        int maxcurr = nums[0];
        int max = nums[0];
        
        for (int i=1;i<nums.length;i++){
            maxcurr  = Math.max(nums[i], maxcurr+nums[i]);
            max = Math.max(max, maxcurr);
        }
        
        return max;
    }
}
点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消