给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数)。

示例 1:

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
输入: [2,3,-2,4]
输出: 6
解释: 子数组 [2,3] 有最大乘积 6。

示例 2:

输入: [-2,0,-1]
输出: 0
解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。
class Solution {
    public int maxProduct(int[] nums) {
        if (nums == null || nums.length == 0)
            return 0;
        else if (nums.length == 1)
            return nums[0];

        int max = 1;
        int min = 1;
        int result = nums[0];

        for (int i : nums) {
            int big = max * i > min * i ? max * i : min * i;
            int small = (max * i) ^ (min * i) ^ big;
            max = i > big ? i : big;
            min = i < small ? i : small;

            result = result > max ? result : max;
        }

        return result;
    }
}
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄