Timeline
Timeline
2026-03-21
init
Dynamic Programming
Problem:
123456789101112131415161718192021222324252627282930 | using std::vector;class Solution { public: int maxProduct(vector<int> &nums) { int i, n = nums.size(); int max_val = nums[0]; // dp[i][0] represents the non-empty contiguous subarray ending with nums[i] that has the maximum product // dp[i][1] represents the non-empty contiguous subarray ending with nums[i] that has the minimum product // dp[i][0] = max{ dp[i-1][0] * nums[i],dp[i-1][1] *nums[i] , nums[i]} // dp[i][1] = min{ dp[i-1][0] * nums[i],dp[i-1][1] *nums[i] , nums[i]} vector<vector<int> > dp(n, vector<int>(2)); dp[0][0] = nums[0]; dp[0][1] = nums[0]; for (i = 1; i < n; i++) { dp[i][0] = std::max( { dp[i - 1][0] * nums[i], dp[i - 1][1] * nums[i], nums[i] }); dp[i][1] = std::min( { dp[i - 1][0] * nums[i], dp[i - 1][1] * nums[i], nums[i] }); max_val = std::max(max_val, dp[i][0]); } return max_val; }}; |
