问题
例子
思路
难点:当只保留到i下标的最大值时,[-2,3,-4],得到24而不是3,怎么办?保留到i下标的最大值和最小值
-
方法1
-
方法2
代码
//方法1
class Solution {
public int maxProduct(int[] nums) {
if(nums.length==0) return 0;
int imax=1,imin=1;//到i下标之前最大的和最小的
int max = Integer.MIN_VALUE;
for(int i=0; i<nums.length; i++) {
if(nums[i]<0) {//如果i下标为负数,则最大值*num[i]会变成最小值,最小值*nums[i]会变成最大值
int t = imax;
imax = imin;
imin = t;
}
imax = Math.max(imax*nums[i], nums[i]);
imin = Math.min(imin*nums[i], nums[i]);
max = Math.max(max, imax);
}
return max;
}
}
//方法2