package leetcode;
public class demo_152 {
public int maxProduct(int[] nums) {
int[] maxdp=new int[nums.length];
int[] mindp=new int[nums.length];
maxdp[0]=nums[0];
mindp[0]=nums[0];
for(int i=1;i<nums.length;i++) {
//大的正数相乘就越大
maxdp[i]=Math.max(maxdp[i-1]*nums[i], Math.max(nums[i], mindp[i-1]*nums[i]));
//两个越小的负数相乘的积也越大
mindp[i]=Math.min(mindp[i-1]*nums[i], Math.min(nums[i], maxdp[i-1]*nums[i]));
}
int max=maxdp[0];
for(int m:maxdp) {
if(m>max) {
max=m;
}
}
System.out.println(max);
return max;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
demo_152 d152=new demo_152();
int[] nums= {2,3,-2,4};
d152.maxProduct(nums);
}
}