题目来源:
https://leetcode-cn.com/problems/maximum-product-subarray/
题目描述:
代码如下:
class Solution {
public int maxProduct(int[] nums) {
if (nums == null || nums.length == 0) {
return 0;
}
// 由于可能存在负数,所以必须同时存储最大值和最小值
int max = nums[0], min = nums[0], result = nums[0]; // 存储最后的结果
for (int i = 1; i < nums.length; i++) {
int temp = max;
// 如果nums[i]是整数,那么和max相乘一定最大,
// 如果nums[i]是负数,且min也是负数,那么这两个相称最大
// 否则可能nums[i]最大。求最小同样如此
max = Math.max(Math.max(max * nums[i], min * nums[i]), nums[i]);
min = Math.min(Math.min(temp * nums[i], min * nums[i]), nums[i]);
result = max > result ? max : result;
}
return result;
}
}