Cover image for leetcode热题100 P152 乘积最大子数组

leetcode热题100 P152 乘积最大子数组

字数 245
阅读
访客

时间轴

时间轴

2026-03-21

init

动态规划

题目:

123456789101112131415161718192021222324252627282930
#include <vector>#include <algorithm>using std::vector;class Solution {    public:        int maxProduct(vector<int> &nums)        {                int i, n = nums.size();                int max_val = nums[0];                // dp[i][0] 表示以nums[i]结尾的 乘积最大的非空连续 子数组                // dp[i][1] 表示以nums[i]结尾的 乘积最小的非空连续 子数组                // 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;        }};
评论加载中…