LeetCode 53. 最大子序和 (java)

动态规划类题目,定义了两个变量a和maxx,a用来记录每个数及之前的数相加的最大值,既dp[i],如果dp[i-1]>0,那么dp[i]+dp[i-1]一定大于dp[i],反之小于,所以只需要每次判断a是否大于0,更新a的值,并判断a与maxx大小,更新maxx。

class Solution {
    public int maxSubArray(int[] nums) {
        int maxx=nums[0];
        int a=nums[0];
        for(int i=1;i<nums.length;i++)
        {
            if(a>=0)
                a=nums[i]+a;
            else
                a=nums[i];
            if(a>maxx)
                maxx=a;
        }
        return maxx;
    }
    
}

猜你喜欢

转载自www.cnblogs.com/y1040511302/p/11285890.html