我是靠谱客的博主 害羞机器猫,最近开发中收集的这篇文章主要介绍152. 乘积最大子数组---js解法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

题目描述:

给你一个整数数组 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解法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部