题解 | #连续子数组的最大乘积#
连续子数组的最大乘积
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")