152. 乘积最大子数组---js解法
作者:互联网
题目描述:
给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。
解题思路:
这道题跟53. 最大子序和思路差不多,区别就是要考虑到负数的问题,存在负负得正可能会比当前的最大值还大,当我们建立两个动态规划数组时,要找到最大值,同时又找到最小值,到下一个新的数,我们要决定保留原来的子数组同时把这个数添加进去,还是用这个数新开一个子数组时,需要用最大值和最小值分别做两次判断。
var maxProduct = function(nums) {
let maxProduct = []
let minProduct = []
maxProduct[0] = nums[0]
minProduct[0] = nums[0]
let max = nums[0]
for(let i=1;i<nums.length;i++) {
maxProduct[i] = Math.max(maxProduct[i-1]*nums[i],nums[i],minProduct[i-1]*nums[i])
minProduct[i] = Math.min(maxProduct[i-1]*nums[i],nums[i],minProduct[i-1]*nums[i])
max = Math.max(max,maxProduct[i])
}
return max
};
标签:152,nums,max,minProduct,maxProduct,js,---,let,数组 来源: https://blog.csdn.net/qq_45679015/article/details/116072586