此题先思考再看解答 感觉最巧妙的是数组s[]来存储是否有重复元素
C++ 代码
#include<iostream>
using namespace std;
const int N=100010;
int q[N];
int s[N];
int main()
{
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++) scanf("%d",&q[i]);
int res=1;
for(int i=1,j=1;i<=n;i++)
{
s[q[i]]++;
while(j<=i&&s[q[i]]>1)
{
s[q[j]]--;
j++;
}
res=max(res,i-j+1);
}
printf("%d",res);
return 0;
}