class Solution {
public int maxProduct(int[] nums) {
//max变量记录全局最大值,imax和imin记录当前遍历位置的局部最大、最小值。
//从数组第一个元素开始循环,若出现负数元素,交换imax和imin。
int max=Integer.MIN_VALUE,imax=1,imin=1;
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;
}
}