双指针做法
#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++)
{
if(m[a[r]]==0)
{
m[a[r]]++;
maxn=max(maxn,r-l+1);
}
while(m[a[l]]>1&&l<=r)
{
m[a[l]]--;
l++;
}
}
cout<<maxn<<endl;
}
}