Product maximum subsequence (dp)

Title: https://leetcode-cn.com/problems/maximum-product-subarray/

class Solution {
public:
    int maxProduct(vector<int>& nums) {
        /*
        *给定一个整数数组 nums ,找出一个序列中乘积
        *最大的连续子序列,该序列至少包含一个数
        *思路:维护当前i结尾的最大、最小。维护最小是
        *考虑了负数的情况
        */
        int n = nums.size();
        int mx = 1,mn = 1,ans = nums[0];
        for(int i = 0;i < n;i++) {
            if(nums[i] < 0) swap(mx,mn);
            mx = max(nums[i],mx*nums[i]);
            mn = min(nums[i],mn*nums[i]);
            ans = max(ans,mx);
        }
        return ans;
    }
};
Published 152 original articles · won praise 2 · Views 6455

Guess you like

Origin blog.csdn.net/weixin_43918473/article/details/104670778