Maximum Product Subarray
Source
Find the contiguous subarray within an array (containing at
least one number) which has the largest product.
Example
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==0) return 0;
int maxprehere = nums[0];
int minprehere=nums[0];
int maxsofar=nums[0];
int maxhere, minhere;
for(int i=1; i<nums.length; i++){
maxhere = Math.max(Math.max(maxprehere*nums[i], minprehere*nums[i]), nums[i]);
minhere = Math.min(Math.min(maxprehere*nums[i], minprehere*nums[i]), nums[i]);
maxsofar = Math.max(maxhere, maxsofar);
maxprehere = maxhere;
minprehere = minhere;
}
return maxsofar;
}
}