class Main {
public static void main(String[] args) {
System.out.println("Hello JSRUN! \n\n - from JAVA .");
}
public int maxProduct(int[] nums) {
int max = Integer.MIN_VALUE, imax = 0, imin = 0;
for(int i = 0; i < nums.length; i++){
if(nums[i] < 0){
int temp = imax;
imax = imin;
imin = temp;
}
imax = Math.max(imax*nums[i],nums[i]);
imin = Math.min(imin*nums[i],nums[i]);
max = Math.max(max,imax);
}
return max;
}
public int maxProduct_1(int[] nums) {
int[][] dp = new int[2][2];
dp[0][0] = nums[0];
dp[0][1] = nums[0];
int max = nums[0];
for(int i = 1; i < nums.length; i++){
int x = i % 2;
int y = (i - 1) % 2;
dp[x][0] = Math.max(Math.max(nums[i] * dp[y][1], nums[i] * dp[y][0]), dp[y][0]);
dp[x][1] = Math.min(Math.min(nums[i] * dp[y][1], nums[i] * dp[y][0]), dp[y][0]);
max = Math.max(dp[x][0],max);
}
return max;
}
}