其他分享
首页 > 其他分享> > 152. 乘积最大子数组---js解法

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,nums,max,minProduct,maxProduct,js,---,let,数组
来源: https://blog.csdn.net/qq_45679015/article/details/116072586