#include<bits/stdc++.h>
using namespace std;
int n,b[100005],g[100005],ans;
bool nn[100010];
int main()
{
std::ios::sync_with_stdio(false);
cin>>n;
for(int i=1;i<=n;i++)
cin>>nn[i];
for(int i=1;i<=n;i++)
if(nn[i]==1)
b[i]=b[i-1]+1;
else
b[i]=b[i-1];
for(int i=1;i<=n;i++)
if(nn[i]==0)
g[i]=g[i-1]+1;
else
g[i]=g[i-1];
for(int i=0;i<=n;i++)
{
for(int j=i+ans;j<=n;j++)
if(b[j]-b[i]==g[j]-g[i])ans=max(ans,j-i);
}
cout<<ans<<endl;
return 0;
}
思路:前缀和
评测记录
所以,有大佬帮忙解答吗?QAQ