最长连续不重复子序列
Posted hhyx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最长连续不重复子序列相关的知识,希望对你有一定的参考价值。
给定长度为n 的序列,求连续的没有重复元素的最长子序列的长度
# 题解
双指针,保证j<i ,用一个数组记录当前值的出现个数,
因为是连续的,当 a[ i ]出现两次的时候,j一直向前,并且映射的次数减1,直到 i 对应的值的出现次数为1时候,取最大记录即可
1 #include<bits/stdc++.h> 2 using namespace std; 3 const int N=1e5+10; 4 int n; 5 int a[N],s[N]; 6 int main(){ 7 ios::sync_with_stdio(0); 8 cin.tie(0); 9 cout.tie(0); 10 cin>>n; 11 for(int i=0;i<n;i++) 12 cin>>a[i]; 13 14 int res=0; 15 for(int i=0,j=0;i<n;i++) { 16 s[ a[i] ]++; 17 while(j<i&&s[a[i]]>1) { 18 s[a[j]]--; 19 j++; 20 } 21 res=max(res,i-j+1); 22 } 23 cout<<res; 24 }
以上是关于最长连续不重复子序列的主要内容,如果未能解决你的问题,请参考以下文章