public static int maxProductOne(int[] nums){
int len=nums.length;
int[] maxF=new int[len];
int[] minF=new int[len];
System.arraycopy(nums,0,maxF,0,len);
System.arraycopy(nums,0,minF,0,len);
for (int i = 1; i <len ; i++) {
maxF[i]=Math.max(maxF[i-1]*nums[i],
Math.max(nums[i],minF[i-1]*nums[i]));
minF[i]=Math.min(minF[i-1]*nums[i],
Math.min(nums[i],maxF[i-1]*nums[i]));
}
int ans=maxF[0];
for (int i = 1; i <len ; i++) {
ans=Math.max(ans,maxF[i]);
}
return ans;
}
public static int maxProduct(int[] nums){
int maxF=nums[0],minF=nums[0],ans=nums[0];
int len=nums.length;
for (int i = 1; i <len ; i++) {
int mx=maxF,mn=minF;
maxF=Math.max(mx*nums[i],Math.max(nums[i],mn*nums[i]));
minF=Math.min(mn*nums[i],Math.min(nums[i],mx*nums[i]));
ans=Math.max(maxF,ans);
}
return ans;
}