萌新求助WA
查看原帖
萌新求助WA
823773
_sh1kong_楼主2022/12/8 09:16

双指针做法

#include<iostream>
#include<cstring>
#include<map> 
#define int long long
#define N 10000010
using namespace std;
int T,n,maxn;
map < int , int > m;
int a[N];
signed main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);cout.tie(0);
	cin>>T;
	while(T--)
	{
		memset(a,0,sizeof(a));
		maxn=0;
		cin>>n;
		m.clear();
		for(int i=1;i<=n;i++) cin>>a[i];
		int l,r;
		for(l=1,r=1;l<=r&&r<=n;r++)
		{
			//try to insert the NO.r snowflake
			if(m[a[r]]==0)
			{
				m[a[r]]++;
				maxn=max(maxn,r-l+1);//can
			} 	
			while(m[a[l]]>1&&l<=r)
			{
				m[a[l]]--;//delete the NO.l snowflake
				l++;
			}
		}
		cout<<maxn<<endl;
	}
}
2022/12/8 09:16
加载中...