题解 | #连续子数组的最大乘积#

连续子数组的最大乘积

https://www.nowcoder.com/practice/fd8c819c07c9493887bfac8549c119f4

#include <iostream>
using namespace std;
const int N = 2e5+10;
int h[N];
int mif[N],maf[N];
int main() {
   int n;cin>>n;
   for(int i=0;i<n;i++) cin>>h[i];
   mif[0]=h[0],maf[0]=h[0];
   for(int i=1;i<n;i++)
   {
     maf[i]=max(maf[i-1]*h[i],max(h[i],mif[i-1]*h[i]));
     mif[i]=min(mif[i-1]*h[i],min(h[i],maf[i-1]*h[i]));
   }
   int k = 0;
   if(n==1) cout<<h[0];
   else
    {
   for(int i=0;i<n;i++)
   k = max(k,maf[i]);
   cout<<k;
    }

}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

双非一本失业第二年:《机器视觉垃圾分类》
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务