152. 乘积最大子数组

119 阅读1分钟

152. 乘积最大子数组

  • var prevMin = nums[0]; 初始化 当前字符串前面一个字符串,算出来的最小值
  • var prevMax = nums[0];。。。。。。最大值
  • var min = prevMin 在for循环内,先存一份prevMin
  • var max = prevMax;在for循环内,先存一份prevMax
  • prevMin = Math.min(nums[i], min * nums[i], max * nums[i]); 重新设置新的prevMin
  • prevMax = Math.max(nums[i], min * nums[i], max * nums[i]);重新设置新的prevMax
  • res = Math.max(res, prevMax); 优化res
var maxProduct = function (nums) {
    var n = nums.length;
    var prevMin = nums[0];
    var prevMax = nums[0];
    var res = nums[0];
    for (var i = 1; i < n; i++) {
        var min = prevMin
        var max = prevMax;
        prevMin = Math.min(nums[i], min * nums[i], max * nums[i]);
        prevMax = Math.max(nums[i], min * nums[i], max * nums[i]);
        res = Math.max(res, prevMax);
    }
    return res;
};