[LeetCode]Maximum Product Subarray

来源:互联网 发布:cpu硅脂品牌 知乎 编辑:程序博客网 时间:2024/06/16 17:21
解题思路:
动态规划:
1,需要记录两个状态,min和max, 因为min * cur可以称为max(负负得正嘛)
2,遍历的每一步,min和max都由premax和premin以及nums[i]来决定。
3,设定ret记录遍历数组过程中产生的最大product 

class Solution {public:    int maxProduct(vector<int>& nums) {        int curMax = nums[0];        int curMin = nums[0];        int ret = curMax;        for ( int i = 1; i < nums.size(); ++i){            int preMax = curMax;            int preMin = curMin;            curMax = max(nums[i], max(preMax*nums[i], preMin*nums[i]));            curMin = min(nums[i], min(preMax*nums[i], preMin*nums[i]));            ret = max(ret, curMax);        }        return ret;    }};


0 0
原创粉丝点击