/
最长连续不重复子序列
1,连续
2,不重复------可以想到用集合去存储符合条件的子序列
3,最长
考虑到滑动窗口的做法
1, l,r两个指针初始都为0
2, r向右移动,直到末尾时,遍历完毕
3,r向右移动的同时,观察集合里的元素是否符合条件(连续不重复)
4, 用一个res记录滑动过程当中,遇到的最大值
/
include[HTML_REMOVED]
include[HTML_REMOVED]
include[HTML_REMOVED]
include[HTML_REMOVED]
using namespace std;
const int maxn=1e5+2;
//用到的两个变量
int q[maxn];
int n;
unordered_set[HTML_REMOVED] s;
int main()
{
int res=0;
int r=0,l=0;
scanf(“%d”,&n);
for(int i=0;i<n;i++) scanf(“%d”,&q[i]);
while(r<n)
{
if(s.count(q[r])==0)//集合里面没有这个元素
{
s.insert(q[r]);
r++;
res=max(res,(int)s.size());
}else {
//集合里面已经有这元素了
while(s.count(q[r]))
{
s.erase(q[l]);
l++;
}
}
}
printf("%d",res);
return 0;
}