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,找到具有最大乘积的数组(包含至少一个数字)内的连续子数组。刚开始没看懂题目,然后折腾了一下还是没写出来,以上为正确答案了。
Maximum Product Subarray(Medium)
最新推荐文章于 2020-10-14 14:45:18 发布