zoukankan      html  css  js  c++  java
  • LeetCode#152-乘积最大子数组-前缀和扩展到前缀积

    package shuzu;
    /*
    152. 乘积最大子数组
    给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。
    
    
    
    示例 1:
    
    输入: [2,3,-2,4]
    输出: 6
    解释: 子数组 [2,3] 有最大乘积 6。
    示例 2:
    
    输入: [-2,0,-1]
    输出: 0
    解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。
               //参考前缀和
                 前缀积
     */
    public class p152 {
        public static int maxProduct(int[] nums) {
            if(nums.length==1)return nums[0];
            int ans=-100000,zhengmax=0,zhengmin=10000,fumax=-10000,fumin=0;
            int mul_i=1;
            for(int i=0;i<nums.length;i++){
                mul_i*=nums[i];
                ans=Math.max(ans,nums[i]);
                ans=Math.max(ans,mul_i);
                if(mul_i>0){
                    zhengmax=Math.max(zhengmax,mul_i);
                    ans=Math.max(ans,zhengmax/zhengmin);
                    zhengmin=Math.min(zhengmin,mul_i);
                }
                else if(mul_i<0){
                    fumin=Math.min(fumin,mul_i);
                    //System.out.println("fumin-----++++++   "+fumin);
                    ans=Math.max(ans,fumin/fumax);
                    fumax=Math.max(fumax,mul_i);
                    //System.out.println("fumax-----++++++   "+fumax);
                }
                else if(mul_i==0){
                    mul_i=1;
                    zhengmax=0;
                    zhengmin=10000;
                    fumax=-10000;
                    fumin=0;
                }
    
            }
            return ans;
    
        }
    
        public static void main(String[] args) {
            int a[]={-2,0,-1};
            System.out.println(maxProduct(a));
    
        }
    }
    

      运行结果:

  • 相关阅读:
    牛客练习赛53 A-E
    算导第二章笔记 (归并排序 之 插入排序优化)
    LightOJ 1372 (枚举 + 树状数组)
    LightOJ 1348 (树链剖分 + 线段树(树状数组))
    Light OJ 1343
    Light OJ 1266
    Light OJ 1085
    CodeForces 671C
    Codeforces Round #352 (Div. 2) (A-D)
    ZOJ1008
  • 原文地址:https://www.cnblogs.com/jifeng0902/p/13371259.html
Copyright © 2011-2022 走看看