package com.interview.books.leetcodeoj;
/**
* Created_By: stefanie
* Date: 14-12-28
* Time: 下午4:23
*/
public class LOJ152_MaximumProductSubarray {
//scan backward and forward tracking products. if product == 0, reset to 1.
//tracking max which is bigger one of backward and forward
public int maxProduct(int[] A) {
int max = Integer.MIN_VALUE;
int forward = 1;
int backward = 1;
for(int i = 0; i < A.length; i++){
forward *= A[i];
backward *= A[A.length - 1 - i];
int bigger = Math.max(forward, backward);
max = Math.max(max, bigger);
if(forward == 0) forward = 1;
if(backward == 0) backward = 1;
}
return max;
}
}