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