leetcode152.乘积最大子数组
作者:互联网
leetcode152.乘积最大子数组
题目
给你一个整数数组 nums
,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。
用例
输入: [2,3,-2,4]
输出: 6
解释: 子数组 [2,3] 有最大乘积 6。
输入: [-2,0,-1]
输出: 0
解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。
求解
/**
* @param {number[]} nums
* @return {number}
*/
var maxProduct = function(nums) {
let res = nums[0]
let prevMin = nums[0]
let prevMax = nums[0]
let temp1 = 0, temp2 = 0
for (let i = 1; i < nums.length; i++) {
temp1 = prevMin * nums[i]
temp2 = prevMax * nums[i]
//选出最小积
prevMin = Math.min(temp1, temp2, nums[i])
//选出最大积
prevMax = Math.max(temp1, temp2, nums[i])
//比较最大积和结果,保留大的
res = Math.max(prevMax, res)
}
return res
};
标签:leetcode152,乘积,nums,res,temp2,temp1,let,数组 来源: https://www.cnblogs.com/boniii/p/15619118.html