【Java】最大子数组和

最大子数组和-力扣

题目

给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。

子数组 是数组中的一个连续部分。

题解

经典的动态规划题目,dp数组的含义是:以当前元素作为结尾的子数组之和的值,按照递推公式:dp[i]=max(dp[i-1]+nums[i],nums[i])

class Solution {
    
    
    public int maxSubArray(int[] nums) {
    
    
        if(nums.length==1)return nums[0];
        int [] dp=new int [nums.length];
        dp[0]=nums[0];
        int max=nums[0];
        for(int i=1;i<nums.length;i++){
    
    
            dp[i]=Math.max(nums[i],dp[i-1]+nums[i]);
            max=Math.max(dp[i],max);
        }
        return max;
    }
}

猜你喜欢

转载自blog.csdn.net/m0_58121644/article/details/128592004