LeetCode

Maximum Product Subarray

Find the contiguous subarray within an array (containing at least one number) which has the largest product.

For example, given the array [2,3,-2,4],
the contiguous subarray [2,3] has the largest product = 6.

Java

public class Solution {
    public int maxProduct(int[] nums) {
        if(nums.length < 1) {
            return 0;
        }

        int max = nums[0], maxC = nums[0], minC = nums[0];

        for(int i = 1; i < nums.length; i++) {
            int a = maxC * nums[i];
            int b = minC * nums[i];

            maxC = Math.max(Math.max(a, b), nums[i]);
            minC = Math.min(Math.min(a, b), nums[i]);

            max = Math.max(max, maxC);
        }
        return max;
    }
}