您的位置:首页 > 其它

LeetCode 152. Maximum Product Subarray(最大乘积)

2016-05-26 01:04 447 查看
原题网址:https://leetcode.com/problems/maximum-product-subarray/

Find the contiguous subarray within an array (containing at least one number) which has the largest product.

For example, given the array
[2,3,-2,4]
,

the contiguous subarray
[2,3]
has the largest product =
6
.
方法:按0将数组分段。

public class Solution {
private int max(int[] nums, int from, int to, int product) {
int right = product;
int max = right;
int left = 1;
for(int i=from; i<=to; i++) {
left *= nums[i];
right /= nums[i];
max = Math.max(max, left);
if (i<to) max = Math.max(max, right);
}
return max;
}
public int maxProduct(int[] nums) {
if (nums==null || nums.length==0) return 0;
int max = nums[0];
int product = 1;
int from = 0;
for(int i=0; i<nums.length; i++) {
if (nums[i] == 0) {
max = Math.max(max, nums[i]);
if (from < i) max = Math.max(max, max(nums, from, i-1, product));
from = i+1;
product = 1;
} else {
product *= nums[i];
if (i==nums.length-1) max = Math.max(max, max(nums, from, i, product));
}
}
return max;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: