152. Maximum Product Subarray

Difficulty:
Related Topics:
Similar Questions:

Problem

Given an integer array nums, find the contiguous subarray within an array (containing at least one number) which has the largest product.

Example 1:

Input: [2,3,-2,4]
Output: 6
Explanation: [2,3] has the largest product 6.

Example 2:

Input: [-2,0,-1]
Output: 0
Explanation: The result cannot be 2, because [-2,-1] is not a subarray.

Solution

/**
 * @param {number[]} nums
 * @return {number}
 */
var maxProduct = function(nums) {
  if (!nums.length) return 0;
  var localMax = 0;
  var localMin = 0;
  var lastMax = nums[0];
  var lastMin = nums[0];
  var max = nums[0];
  for (var i = 1; i < nums.length; i++) {
    localMax = Math.max(lastMax * nums[i], lastMin * nums[i], nums[i]);
    localMin = Math.min(lastMax * nums[i], lastMin * nums[i], nums[i]);
    max = Math.max(max, localMax);
    lastMax = localMax;
    lastMin = localMin;
  }
  return max;
};

Explain:

nope.

Complexity: