LeetCode Maximum Product Subarray

来源:互联网 发布:淘宝宝贝评价没有了 编辑:程序博客网 时间:2024/05/01 08:29

思路:

类似 Maximum Subarray 求最大连续整数和的问题,该题是解连续最大整数的积。

最大连续整数和:记录局部最大值和全局最大值。
最大连续整数积:记录局部最大值、全局最大值以及局部最小值,因为局部最小值有可能碰到下一个负数变成局部最大值,进而变成全局最大值。

时间复杂度O(N),空间复杂度O(1)。

class Solution {public:    int maxProduct(vector<int>& nums) {        int size = nums.size();        if(size <= 0) return 0;        if(size == 1) return nums[0];        int max_local = nums[0];        int min_local = nums[0];        int gloable = nums[0];        for(int i = 1; i < size; ++i) {            int max_copy = max_local;            max_local = max(max(nums[i] * max_local, nums[i]), nums[i] * min_local);            min_local = min(min(nums[i] * max_copy, nums[i]), nums[i] * min_local);            gloable = max(max_local, gloable);        }        return gloable;    }};
0 0