152. 乘积最大子序列

2019-07-29  本文已影响0人  最困惑的时候就是能成长的时候

152. 乘积最大子序列

1.想法:

1.如果全都是正数,那么就不用了算了,直接将所有的值都乘起来,而,如果全都是负数,直接返回最长的偶数个数列的乘积,
2.混合队列的话只记录局部最大值并不能找到最大值,需要记录其最小值,然后在所有最大值里面找到最大值.


image.png

2.代码

 class Solution {
    public int maxProduct(int[] nums) {
        int result = nums[0],Min = nums[0],Max=nums[0];
        for(int i=1;i<nums.length;i++){
            int temp1 = Max*nums[i];
            int temp2 = Min*nums[i];
            int tempMax = temp1>temp2?temp1:temp2;
            int tempMin = temp1<=temp2?temp1:temp2;
            int max = tempMax>nums[i]?tempMax:nums[i];
            int min = tempMin<=nums[i]?tempMin:nums[i];
            Max=max;
            Min=min;
            if(Max>result){
                result = Max;
            }
        }
        return result;
    }
}
上一篇下一篇

猜你喜欢

热点阅读