AcWing 799. 最长连续不重复子序列
原题链接
简单
作者:
xxdxs
,
2021-04-22 14:57:57
,
所有人可见
,
阅读 229
#include<iostream>
using namespace std;
const int N = 1e5 + 10;
int n;
int a[N], sg[N]; // N < MAX(a[i])
int main()
{
cin >> n;
for (int i = 0 ; i < n ;i ++)
scanf("%d",&a[i]);
int res = 0;
for( int i = 0, j = 0 ; i < n ; i ++ )
{
/*相当于j是单调递增的,每一个i加进来首先考虑i能不能白加,
能白加自动跳过while更新res。加出重复的来了(s[q[i] > 1)
再去更新j指针直到新加的i变成不重复的(因为i前面的已经是
不重复的了所以不考虑)。
*/
sg[a[i]] ++;
while ( sg[a[i]] > 1 )
{
sg[a[j]] --;
j++;
}
res = max(res,i - j + 1);
}
cout << res;
return 0;
}