亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

一分鐘算法題:計算最大子數組

標簽:
算法

题目描述:

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

题目举例:

给定输入:[-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人點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
全棧工程師
手記
粉絲
9452
獲贊與收藏
241

關注作者,訂閱最新文章

閱讀免費教程

感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消