给定一个长度为n的整数序列,请找出最长的不包含重复的数的连续区间,输出它的长度。
输入格式
第一行包含整数n。
第二行包含n个整数(均在0~100000范围内),表示整数序列。
输出格式
共一行,包含一个整数,表示最长的不包含重复的数的连续区间的长度。
数据范围
1≤n≤100000
输入样例:
5
1 2 2 3 5
输出样例:
3
#include <stdio.h>
#include <string.h>
#define numMAX 100000
int main(){
int n,i,j=0,max=0,st[numMAX+1]; //st[]计数数组
memset(st,0,sizeof(st));
scanf("%d",&n);
int a[n];
for(i=0;i<n;i++){
scanf("%d",&a[i]);
st[a[i]]++;
while(st[a[i]]>1) st[a[j++]]--; //双指针扫描 当a[i]这个数字出现第二次了 则a[i]这个数字出现第一次及其之前的都要舍去
if(i-j+1>max) max=i-j+1;
}
printf("%d",max);
return 0;
}
版权声明:本文为weixin_49548350原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。