Q152 乘积最大子序列

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

示例 1:

输入: [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;
    }
}
posted @ 2019-05-08 09:46  围城DDD  阅读(125)  评论(0)    收藏  举报