首页 > 编程语言 > 详细

[LeetCode] 152. 乘积最大子数组

时间:2020-05-20 21:57:01      阅读:69      评论:0      收藏:0      [点我收藏+]

。。。。自己想到的真的太菜了,想用四个变量来存储,考虑到乘以负数最大值会变小的问题,但是没有想到要用最大值或者最小值与nums[i]来比较

技术分享图片
package leetcode;

/**
 * @author doyinana
 * @create 2020-05-20 20:27
 */
public class L152 {
    public int maxProduct(int[] nums) {
        int temp1=0,temp2=0,min=1,max=1;
        for (int num:nums){
            temp1=min*num;
            temp2=max*num;
            min=Math.min(temp1,temp2);
            max=Math.max(temp1,temp2);
        }
    }
}
View Code

大佬的答案:

public class L152 {
    public int maxProduct(int[] nums) {
        int max=Integer.MIN_VALUE,imax=1,imin=1;
        for (int num:nums){
            if (num<0){
                int tmp=imax;
                imax=imin;
                imin=imax;
            }
            imax=Math.max(imax*num,num);
            imin=Math.min(imin*num,num);

            max=Math.max(max,imax);
        }
        return max;
    }
}

技术分享图片

另外一个的解答,其中有动态规划很多的总结

 https://leetcode-cn.com/problems/maximum-product-subarray/solution/dong-tai-gui-hua-li-jie-wu-hou-xiao-xing-by-liweiw/

[LeetCode] 152. 乘积最大子数组

原文:https://www.cnblogs.com/doyi111/p/12926371.html

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