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<a) max = a;

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

            if(num==0) a=1;

        }

        a = 1;

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

            a = a*nums[i];

            if(max<a) max = a;

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

        }

        return max;

    }

}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容