Leetcode 152 乘积最大子序列

题目

分析

考虑到有负数的参与,会使现有的最大的变成最小的,最小的变成最大的,实际上也可以看做是一种动态规划,imax和imin分别记录的是以当前位置为结尾的,最大和最小的子序列乘积的大小。

代码

 public static int maxProduct(int[] nums){

        int imax=Integer.MIN_VALUE;
        int imin= Integer.MAX_VALUE;
        int max=Integer.MIN_VALUE;
        for(int i=0;i<nums.length;i++)
        {
            if(nums[i]<0)
            {
                int temp=imax;
                imax=imin;
                imin=temp;
            }
            imax=Math.max(imax*nums[i],nums[i]);
            imin=Math.min(imin*nums[i],nums[i]);
            max=Math.max(max,imax);
        }
        return max;
    }

学习情况

1次

全部评论

相关推荐

迷茫的大四🐶:💐孝子启动失败,改为启动咏鹅
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务