java 152.最大产品子阵列(第1个).java

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 152.最大产品子阵列(第1个).java相关的知识,希望对你有一定的参考价值。

public class Solution {
    public int maxProduct(int[] nums) {
        int res = Integer.MIN_VALUE;
        if (nums == null || nums.length < 1) return res;
        int len = nums.length;
        int[][] dp = new int[len][2];
        dp[0][0] = nums[0];
        dp[0][1] = nums[0];
        res = nums[0];
        for (int i = 1; i < len; i++) {
            int first = dp[i - 1][0] * nums[i];
            int second = dp[i - 1][1] * nums[i];
            dp[i][0] = Math.min(Math.min(first, second), nums[i]);
            dp[i][1] = Math.max(Math.max(first, second), nums[i]);
            res = Math.max(res, dp[i][1]);
        }
        return res;
    }
}
public class Solution {
    public int maxProduct(int[] nums) {
        if (nums == null || nums.length == 0) return 0;
        int n = nums.length;
        int[] min = new int[n];
        int[] max = new int[n];
        min[0] = nums[0];
        max[0] = nums[0];
        for (int i = 1; i < n; i++) {
            if (nums[i] > 0) {
                max[i] = Math.max(nums[i], max[i - 1] * nums[i]);
                min[i] = Math.min(nums[i], min[i - 1] * nums[i]);
            } else {
                max[i] = Math.max(nums[i], min[i - 1] * nums[i]);
                min[i] = Math.min(nums[i], max[i - 1] * nums[i]);
            }
        }
        int result = Integer.MIN_VALUE;
        for (int num : max) {
            result = Math.max(result, num);
        }
        return result;
    }
}

以上是关于java 152.最大产品子阵列(第1个).java的主要内容,如果未能解决你的问题,请参考以下文章

java 152.最大产品子阵列(第1个).java

java 152.最大产品子阵列(第1个).java

java 152.最大产品子阵列(第1个).java

java 152.最大产品子阵列(第1个).java

c_cpp 152.最大产品子阵列

java 53.最大子阵列(第1个).java