概述
题目描述:
给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。
152. 乘积最大子数组
解题思路:
这道题跟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. 乘积最大子数组---js解法的全部内容,希望文章能够帮你解决152. 乘积最大子数组---js解法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复