最长连续不重复子序列,不知道为什么超时了,过了9个数据
给定一个长度为 n
的整数序列,请找出最长的不包含重复的数的连续区间,输出它的长度。
输入格式
第一行包含整数 n
。
第二行包含 n
个整数(均在 0∼105
范围内),表示整数序列。
输出格式
共一行,包含一个整数,表示最长的不包含重复的数的连续区间的长度。
数据范围
1≤n≤105
输入样例:
5
1 2 2 3 5
输出样例:
3
```c++
#include<iostream>
#include<cstring>
using namespace std;
const int N=100009;
int a[N],n,len=1,res[N];
bool check(int x,int y){
memset(res,0,sizeof(res));
for(int i=y;i<=x;i++){
if(res[a[i]]==1) return true;
res[a[i]]=1;
}
return false;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=1,j=1;i<=n;i++){
while(j<i&&check(i,j)) j++;
len=max(len,i-j+1);
}
cout<<len<<endl;
return 0;
}
```