求不含重复数字的连续子序列,输出其首数字的下标
#include<iostream>
using namespace std;
const int N=10001;
int a[N],s[N];
//s[N]用于存a[i]出现的次数
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)cin>>a[i];
int ans;
for(int i=0,j=0;i<n;i++)
{
s[a[i]]++;//a[i]出现次数加1
//当出现连续数字时让j来到i的位置并重置s[a[N]
while(s[a[i]]>1)
{
s[a[j]]--;
j++;
}
//求最大值
ans=max(ans,i-j+1);
}
cout<<ans;
return 0;
}