给一个序列,找没有相同元素的最长子序列的长度。
从l=0,r=0开始找,目前子序列没有重复就r++,有重复就l++,利用set进行储存。
#include <iostream>
#include <cstdio>
#include <set>
using namespace std;
int a[1000010];
int main()
{
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
set<int>s;
int l=0,r=0,ans=0;
while(r<n)
{
while(r<n&&!s.count(a[r]))
s.insert(a[r++]);
ans=max(ans,r-l);
s.erase(a[l++]);
}
printf("%d\n",ans);
}
return 0;
}