LeetCode152. 乘积最大子数组
题目难度:中等
题目描述:
给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。
class Solution {
public:
int maxProduct(vector<int>& nums) {
int n=nums.size();
int dp[n+1];
int dp_min[n+1];
dp[0]=nums[0];
dp_min[0]=nums[0];
int ans=nums[0];
for(int i=1;i<n;i++){
dp[i]=max(nums[i]*dp_min[i-1],max(nums[i]*dp[i-1],nums[i]));
dp_min[i]=min(nums[i]*dp[i-1],min(nums[i]*dp_min[i-1],nums[i]));
if(dp[i]>ans){
ans=dp[i];
}
}
return ans;
}
};
还没有评论,来说两句吧...