Java教程

java 动态规划例题 II

本文主要是介绍java 动态规划例题 II,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

剑指 Offer 42. 连续子数组的最大和

class Solution {
    public int maxSubArray(int[] nums) {
        int len = nums.length;
        if(len == 0) return 0;
        int[] dp = new int[len];
        dp[0] = nums[0];
        int res = nums[0];
        for(int i = 1; i < len; i++){
        //dp[i - 1] > 0  则 +nums[i]会更大
        //dp[i - 1] <= 0  则 +nums[i]会更小
        //此处 + nums[i]后情况判断dp[i]的最大值
        //若之前dp[i - 1] <= 0,则可以理解为更新子数组的起始位置为nums[i]
            dp[i] = Math.max(dp[i - 1] + nums[i], nums[i]);
        //每一轮筛选一次最大值,更新给res
            res = Math.max(dp[i], res);
        }
        return res;
    }
}
这篇关于java 动态规划例题 II的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!