799. 最长连续不重复子序列
Posted 幽殇默
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了799. 最长连续不重复子序列相关的知识,希望对你有一定的参考价值。
https://www.acwing.com/problem/content/description/801/
朴素写法:
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
const int N=1e5+10;
int a[N];
bool hush[N];
int ans;
int main(void)
{
int n; cin>>n;
for(int i=0;i<n;i++) scanf("%d",&a[i]);
for(int i=0;i<n;i++)
{
int k=0;
memset(hush,0,sizeof hush);
for(int j=i;!hush[a[j]]&&j<n;j++)
k++,hush[a[j]]=true;
ans=max(ans,k);
}
cout<<ans<<endl;
return 0;
}
双指针写法:
#include<cstdio>
#include<iostream>
using namespace std;
const int N=1e5+10;
int a[N],hush[N];
int n;
int ans;
int main(void)
{
cin>>n;
for(int i=0;i<n;i++) cin>>a[i];
for(int i=0,j=0;i<n;i++)
{
hush[a[i]]++;
while(hush[a[i]]>1)
{
hush[a[j]]--;
j++;
}
ans=max(ans,i-j+1);
}
cout<<ans<<endl;
}
以上是关于799. 最长连续不重复子序列的主要内容,如果未能解决你的问题,请参考以下文章