欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

799. 最长连续不重复子序列 【双指针经典板子题】

发布时间:2025/3/20 44 豆豆
生活随笔 收集整理的这篇文章主要介绍了 799. 最长连续不重复子序列 【双指针经典板子题】 小编觉得挺不错的,现在分享给大家,帮大家做个参考.


https://www.acwing.com/problem/content/description/801/

自己写的笨方法:

#include<iostream> #include<cstdio> #include<algorithm> #include<cstring> using namespace std; const int N=1e5+10; int a[N]; bool hush[100005]; int ans; int main(void) {int n;cin>>n;for(int i=0;i<n;i++) scanf("%d",&a[i]);for(int i=0,j=0;i<n;i++){j=i;int k=0;memset(hush,0,sizeof hush);while(j<n&&!hush[a[j]]) k++,hush[a[j]]=true,j++;ans=max(ans,k);}cout<<ans<<endl;return 0; }

y神的思路:

#include<iostream> #include<algorithm> #include<cstdio> using namespace std; const int N=1e5+10; int a[N],s[N]; int n; int ans; int main(void) {cin>>n;for(int i=0;i<n;i++) scanf("%d",&a[i]);for(int i=0,j=0;i<n;i++){s[a[i]]++;while(s[a[i]]>1)//当一个数出现了两次{s[a[j]]--;//j剔除掉前面的数字j++;}ans=max(ans,i-j+1);}cout<<ans<<endl;return 0; }

总结

以上是生活随笔为你收集整理的799. 最长连续不重复子序列 【双指针经典板子题】的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。