[Dynamic Programming] leetcode 152 Maximum Product Subarray

problem:https://leetcode.com/problems/maximum-product-subarray

        Similar to trading stocks, we need to maintain two states, the current maximum number and minimum number.

class Solution {
public:
    int maxProduct(vector<int>& nums) {
        int res = INT_MIN;
        
        int num_max = 1;
        int num_min = 1;
        for(int i = 0;i<nums.size();i++)
        {
            int a = num_max * nums[i];
            int b = num_min * nums[i];
 
            num_max = max({a, b, nums[i]});
            num_min = min({a, b, nums[i]});
 
            res = max (a, num_max); 
        } 
        Return res; 
    } 
};

 

Guess you like

Origin www.cnblogs.com/fish1996/p/11330291.html