[리트코드] 152. Maximum Product Subarray




152. Maximum Product Subarray

리트코드

나의 풀이

/**
 * @param {number[]} nums
 * @return {number}
 */
var maxProduct = function (nums) {
  if (!nums.length) return 0;
  let maxSoFar = nums[0];
  let minSoFar = nums[0];
  let result = maxSoFar;
  for (let i = 1; i < nums.length; i++) {
    let curr = nums[i];
    let max = Math.max(curr, Math.max(maxSoFar * curr, minSoFar * curr));
    minSoFar = Math.min(curr, Math.min(maxSoFar * curr, minSoFar * curr));
    maxSoFar = max;
    result = Math.max(result, max);
  }
  return result;
};
console.log(maxProduct([-4, -3, -2]));

음수일 때 계산을 위해 최솟값도 가져가야 한다.