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
.
public class Solution { public int maxProduct(int[] nums) { if (nums == null || nums.length == 0) { return 0; } int max = nums[0]; int min = nums[0]; int res = nums[0]; int maxEnd = 0; int minEnd = 0; for (int i = 1; i < nums.length; i++) { maxEnd = max * nums[i]; minEnd = min * nums[i]; max = Math.max(Math.max(maxEnd, minEnd), nums[i]); min = Math.min(Math.min(maxEnd, minEnd), nums[i]); res = Math.max(max, res); } return res; } }