维护一个窗口,然后每次枚举时,都进行进出窗口的操作就可以了
#include <iostream>
#include <algorithm>
using namespace std;
const int N=1e5+10;
int a[N];
bool st[N];
int res;
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)
cin>>a[i];
for(int i=0,j=0;i<n;)
{
while(j<n&&!st[a[j]])
st[a[j]]=true,j++;
res=max(res,j-i);
st[a[i]]=false;
i++;
}
cout<<res;
return 0;
}