public int maxProduct(int[] nums) {
int max = nums[0]; // 前 i-1的最大值
int min = nums[0]; // 前 i-1的最小值
int maxResult = nums[0];
for (int i = 1; i < nums.length; i++) {
int tempMax = max;
int tempMin = min;
// todo maxResult来源: 1、当前数不乘前面i-1的最大值 2、当前数乘以前i-1的最大值
// 3、当前数乘以前i-1的最小值(因为存在负数,可能最小变最大)
max = Math.max(nums[i], Math.max(nums[i] * tempMax, nums[i] * tempMin));
min = Math.min(nums[i], Math.min(nums[i] * tempMax, nums[i] * tempMin));
maxResult = Math.max(maxResult, max);
}
return maxResult;
}
Hot100【三十六】:乘积最大子数组
于 2024-04-09 23:40:19 首次发布