AcWing 799. 最长连续不重复子序列
原题链接
简单
作者:
月下邂逅
,
2024-04-22 00:30:02
,
所有人可见
,
阅读 1
C++ 代码
#include<iostream>
#include<cstdio>
using namespace std;
const int N=100010;
int arr[N],s[N];//arr[N]用来记录序列,s[N]用来记录某个数出现的次数
int main()
{
int n,res=0,j=0,i=0;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&arr[i]);
s[arr[i]]++;//没输入一个数字就将这个数字出现次数++
while(s[arr[i]]>1) s[arr[j++]]--;/*因为i前的数都不重复,所以如果出现重复的数肯定是arr[i],
此时每次将j往后移一位并且使当前arr[j]出现次数--直至重复的数被剔除,此时无重复序列的长度为i-j+1*/
res=max(res,i-j+1);
}
printf("%d",res);
return 0;
}