Max product sub array
import java.util.*;
public class MaxProductSubArray {
public static void main(String args[]) {
MaxProductSubArray maxProductSubArray = new MaxProductSubArray();
int[][] input = {
null,
{},
{-6,4,-5,8,-10,0,8},
{40,0,-20,-10}
};
for(int i=0; i< input.length; i++) {
System.out.println("Input: " + Arrays.toString(input[i]) + " Result: " + maxProductSubArray.find(input[i]));
}
}
private int find(int[] input) {
if(input == null || input.length < 1) {
return -1;
}
int maxEnding = 0;
int minEnding = 0;
int maxSoFar = 0;
for(int i=0; i<input.length; i++){
int temp = maxEnding;
maxEnding = Math.max(input[i], Math.max(minEnding * input[i], maxEnding * input[i]));
minEnding = Math.min(input[i], Math.min(minEnding * input[i], temp * input[i]));
maxSoFar = Math.max(maxSoFar, maxEnding);
}
return maxSoFar;
}
}