class Solution {
public int maxProduct(int[] nums) {
//直接使用两个数组:一个max数组和一个min数组;
//max数组用来保存累乘到当前数为止的最大值,min数组保存累乘到当前数为止的最小值,遇到0就重置
//max数组和min数组的取值都是在max[i-1]*nums[i],min[i-1]*nums[i],nums[i]中取其中的最大/最小值
int n = nums.length;
int[] maxArr = new int[n],minArr = new int[n];
maxArr[0] = nums[0];
minArr[0] = nums[0];
for(int i = 1;i < n;i++){
maxArr[i] = Math.max(nums[i],Math.max(maxArr[i-1]*nums[i],minArr[i-1]*nums[i]));
minArr[i] = Math.min(nums[i],Math.min(maxArr[i-1]*nums[i],minArr[i-1]*nums[i]));
}
int maxx = Integer.MIN_VALUE;
for(int i = 0;i < n;i++)
maxx = Math.max(maxx,maxArr[i]);
return maxx;
}
}
题解 - 序列
2024-05-10 06:36:07 122 阅读