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
.
class Solution {
public int maxProduct(int[] nums) {
if(nums.length==0) return 0;
if(nums.length==1) return nums[0];
int localmin = nums[0];
int localmax = nums[0];
int global = nums[0];
for(int i = 1;i<nums.length;i++){
int temp = localmin;
localmin = Math.min(Math.min(localmax*nums[i],localmin*nums[i]),nums[i]);
localmax = Math.max(Math.max(localmax*nums[i],temp*nums[i]),nums[i]);
global = Math.max(global,localmax);
}
return global;
}
}