AcWing 模板题 – 799. 最长连续不重复子序列

  • Post author:
  • Post category:其他


给定一个长度为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 版权协议,转载请附上原文出处链接和本声明。