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
.
Analysis:
Solution:
1 public class Solution { 2 public int maxProduct(int[] A) { 3 if (A.length==0) return 0; 4 int res = A[0]; 5 int max = A[0]; 6 int min = A[0]; 7 8 for (int i=1;i<A.length;i++){ 9 int newMax = 0, newMin = 0; 10 if (A[i]>=0){ 11 newMax = Math.max(A[i],max*A[i]); 12 newMin = Math.min(A[i],min*A[i]); 13 } else { 14 newMax = Math.max(A[i],min*A[i]); 15 newMin = Math.min(A[i],max*A[i]); 16 } 17 max = newMax; 18 min = newMin; 19 res = Math.max(res,max); 20 } 21 22 return res; 23 } 24 }