class Solution {
public:
int maxProduct(vector<int>& nums) {
int n=nums.size();
int dp[n+1];
dp[0]=-100;
int ans=-100;
int dp2[n+1];
dp2[0]=100;
for(int i=1;i<n+1;i++){
if(nums[i-1]>0){
dp[i]=max(nums[i-1],dp[i-1]*nums[i-1]);
dp2[i]=min(nums[i-1],dp2[i-1]*nums[i-1]);
}
else{
dp[i]=max(nums[i-1],dp2[i-1]*nums[i-1]);
dp2[i]=min(nums[i-1],dp[i-1]*nums[i-1]);
}
ans=max(ans,dp[i]);
}
return ans;
}
};
152. 乘积最大子数组(动态规划)
最新推荐文章于 2026-06-15 10:30:49 发布
本文介绍了一种求解最大连续子数组乘积的算法,通过动态规划的方法,考虑正负数的影响,实现了一个高效的解决方案。


1764

被折叠的 条评论
为什么被折叠?



