题解 | #不知道叫什么名字#

星期几考试?

https://ac.nowcoder.com/acm/contest/71512/A

一道基本算法题就是一道找最大0和1数量相同的01子串问题

这里可以直接用unordered_map解决

#include <bits/stdc++.h>
using namespace std;
#define ios ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
#define ll long long
const int maxn=1e5+5;
int arr[maxn],pre_sum[maxn];
unordered_map <int, int> mp;
int main()
{
	//freopen("","r",stdin);
	//freopen("","w",stdout);
	ios;
	int n;
	cin>>n;
    mp[0]=0;
    for(int i=1;i<=n;i++)
	{
        cin>>arr[i];
        arr[i]=arr[i]==0?-1:1;
        int x=pre_sum[i]=pre_sum[i-1]+arr[i];
        if(x==0)
		{
            continue;
        }
        mp[x]=mp[x]?mp[x]:i;
    }    
    int ans=0;
    for(int i=1;i<=n;i++)
	{
        ans=max(ans,i-mp[pre_sum[i]]);
    }
    cout<<ans<<endl;
    return 0;
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-10 14:00
林子大了什么鸟都有啊,我觉得我说的已经很客气了,阴阳谁呢
牛客62656195...:应该不是阴阳吧?你第一次注册的时候boss就说你是牛人
点赞 评论 收藏
分享
06-12 16:23
已编辑
小米_软件开发(准入职员工)
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务