vamsu
7/29/2018 - 11:02 PM

Max product sub array

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;
    }
}