1. 程式人生 > 其它 >【leetcode】-152-乘積最大子陣列-動態規劃

【leetcode】-152-乘積最大子陣列-動態規劃

技術標籤:演算法刷題

https://blog.csdn.net/qq_39328436/article/details/112405890在這篇部落格中寫了最大子序列和的問題,f[i]=max(f[i-1]+nums[i],nums[i]),對這個題目的轉移方程可以有所啟發。

【動態規劃】

  int maxProduct(vector<int>& nums) {
       int n=nums.size();
       vector <int> maxF(n), minF(n);

       maxF[0]=nums[0];
       minF[0]=nums[0];

        for (int i = 1; i < nums.size(); ++i) 
        {
            maxF[i] = max(maxF[i - 1] * nums[i], max(nums[i], minF[i - 1] * nums[i]));
    
            minF[i] = min(minF[i - 1] * nums[i], min(nums[i], maxF[i - 1] * nums[i]));
        }

        return *max_element(maxF.begin(),maxF.end());
    }