首页 > 编程语言 > 详细

152. 乘积最大子数组

时间:2021-07-24 20:45:29      阅读:19      评论:0      收藏:0      [点我收藏+]
package leetcode;

public class demo_152 {
    public int maxProduct(int[] nums) {
        int[] maxdp=new int[nums.length];
        int[] mindp=new int[nums.length];
        maxdp[0]=nums[0];
        mindp[0]=nums[0];
        for(int i=1;i<nums.length;i++) {
            //大的正数相乘就越大
            maxdp[i]=Math.max(maxdp[i-1]*nums[i], Math.max(nums[i], mindp[i-1]*nums[i]));
            //两个越小的负数相乘的积也越大
            mindp[i]=Math.min(mindp[i-1]*nums[i], Math.min(nums[i], maxdp[i-1]*nums[i]));
        }
        int max=maxdp[0];
        for(int m:maxdp) {
            if(m>max) {
                max=m;
            }
        }
        System.out.println(max);
        return max;
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        demo_152 d152=new demo_152();
        int[] nums= {2,3,-2,4};
        d152.maxProduct(nums);
    }

}

 

152. 乘积最大子数组

原文:https://www.cnblogs.com/Yshun/p/15055313.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!