152. 乘积最大子数组

152. 乘积最大子数组 - 力扣(LeetCode) (leetcode-cn.com)

class Solution {

    /*

    * 思路: 求最大值,可以看成求被0拆分的各个子数组的最大值。

        当一个数组中没有0存在,则分为两种情况:

        1.负数为偶数个,则整个数组的各个值相乘为最大值;

        2.负数为奇数个,则从左边开始,乘到最后一个负数停止有一个“最大值”,从右边也有一个“最大值”,比较,得出最大值。

    * */

    public int maxProduct(int[] nums) {

        int a = 1;

        int max = nums[0];

        //从左边开始

        for(int num:nums){

            a = a*num;

            if(max

            //如果数组出现0,拆分数组

            if(num==0) a=1;

        }

        a = 1;

        for(int i=nums.length-1;i>=0;i--){

            a = a*nums[i];

            if(max

            if(nums[i]==0) a=1;

        }

        return max;

    }

}

你可能感兴趣的:(152. 乘积最大子数组)