JZ42连续子数组的最大和

题目地址:连续子数组的最大和_牛客题霸_牛客网
题目回顾:

JZ42连续子数组的最大和_第1张图片

解题思路:

使用动态规划,这里用dp[]数组表示以下标i为终点的最大连续子数组和。

遍历整个数组,每当遇到一个新元素时有两种情况,要么加上它会更大,要么加上它会更小。所以dp的状态转换应该为:dp[i] = Math.max(array[i],dp[i-1]+array[i]);

整体代码:
    public int FindGreatestSumOfSubArray (int[] array) {
        int[] dp = new int[array.length];
        dp[0] = array[0];
        int max = array[0];

        for (int i = 1; i < array.length; i++) {
            dp[i] = Math.max(array[i],dp[i-1]+array[i]);
            max = Math.max(max,dp[i]);
        }
        return max;
    }

你可能感兴趣的:(力扣刷题,java,算法,数据结构)