public int maxProduct(int[] nums) {
int n = nums.length;
int[] maxF = new int[n];
int[] minF = new int[n];
System.arraycopy(nums, 0, maxF, 0, n);
System.arraycopy(nums, 0, minF, 0, n);
for (int i = 1; i < nums.length; i++) {
maxF[i] = Math.max(nums[i], Math.max(maxF[i-1] * nums[i], minF[i-1] * nums[i]));
minF[i] = Math.min(nums[i], Math.min(maxF[i-1] * nums[i], minF[i-1] * nums[i]));
}
int res = maxF[0];
for (int i = 1; i < n; i++) {
res = Math.max(res, maxF[i]);
}
return res;
}
public int maxProduct(int[] nums) {
int n = nums.length;
int maxF = nums[0];
int minF = nums[0];
int res = nums[0];
for (int i = 1; i < nums.length; i++) {
int min = minF, max = maxF;
maxF = Math.max(nums[i], Math.max(max * nums[i], min * nums[i]));
minF = Math.min(nums[i], Math.min(max * nums[i], min * nums[i]));
res = Math.max(maxF, res);
}
return res;
}
152. 乘积最大子数组
最新推荐文章于 2023-05-29 21:16:05 发布