0
点赞
收藏
分享

微信扫一扫

53.最大子数组和

53.最大子数组和

文章目录

题目描述:

在这里插入图片描述
在这里插入图片描述

解法:动态规划

代码:

class Solution {
    public int maxSubArray(int[] nums) {

        int len = nums.length;
        /*
        1.dp[i] 表示以下标i结尾的最大连续子数组和
        2.if(dp[i - 1] > 0){
            dp[i] = dp[i - 1] + nums[i];
        } else {
            dp[i] = nums[i];
        }
        3. dp[i] = nums[i];
        */
        int[] dp = new int[len];
        int rest = nums[0];
        dp[0] = nums[0];
        for(int i = 1; i < len; i++){
            if(dp[i - 1] > 0){
                dp[i] = dp[i - 1] + nums[i];
            } else {
                dp[i] = nums[i];
            }
            rest = Math.max(rest, dp[i]);
        }
        return rest;
    }
}

优化

代码:

class Solution {
    public int maxSubArray(int[] nums) {

        int len = nums.length;
        int[] dp = new int[len];
        int rest = nums[0], m = rest;//两个变量表示最大和
        dp[0] = nums[0];
        for(int i = 1; i <len; i++){
            m = Math.max(m + nums[i], nums[i]);
            if(m > rest){
                rest = m;
            }
        }
        return rest;
    }
}
举报

相关推荐

0 条评论