Maximum Product Subarray(Medium)

Maximum Product Subarray by Leetcode
java编写
class Solution {
public int maxProduct(int[] nums) {
if (nums == null || nums.length <= 0) return 0;
int currMaxProd = nums[0];
int currMinProd = nums[0];
int prevMaxProd = nums[0];
int prevMinProd = nums[0];
int maxProd = nums[0];
for (int i = 1; i < nums.length; i++) {
// case 1 :curr element is positive -> include it with previous currMaxProd , as it is increasing the prod.
// case 2: curr element is negative -> include it with previous currMinProd , as it is increasing the prod.
// case 3: subarray start from the curr element
currMaxProd = Math.max (
Math.max (prevMaxProd * nums[i], prevMinProd * nums[i]),
nums[i]
);
currMinProd = Math.min (
Math.min (prevMaxProd * nums[i], prevMinProd * nums[i]),
nums[i]
);
maxProd = Math.max(currMaxProd, maxProd);
prevMaxProd = currMaxProd;
prevMinProd = currMinProd;
}
return maxProd;
}
}
给定整数数组nums,找到具有最大乘积的数组(包含至少一个数字)内的连续子数组。刚开始没看懂题目,然后折腾了一下还是没写出来,以上为正确答案了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值