AcWing 799. 最长连续不重复子序列
原题链接
简单
作者:
Judy666
,
2024-04-17 20:49:18
,
所有人可见
,
阅读 1
#include <iostream>
using namespace std;
int main() {
int N=1e5+10;
int A[N],B[N]; // A[i]用于记录输入数据,B[i]用于记录i的个数
int n;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&A[i]);
}
int len=0;
// 1 2 3 2 4 5
for(int i=0,j=0;i<n;i++){
B[A[i]]++; // 输入1,则B[1]++,B[1]=1,表示1有1个
while (B[A[i]]>1){ // 加入A[i]导致重复,需要找到与A[i]相等的那个元素,并且将该元素及其之前的元素都丢掉
B[A[j]]--; // 扔掉B[A[j]]
j++; // 向后移动一位
}
len = max(len,i-j+1);
}
printf("%d\n",len);
return 0;
}