AcWing 799. 最长连续不重复子序列
原题链接
简单
作者:
xxxx_XXXXX
,
2021-04-09 11:37:34
,
所有人可见
,
阅读 258
个人理解–最长连续不重复子序列
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 100 ;
int q[N] , s[N]; //q保存数组, s保存i j这个区间元素出现的次数
int n ;
int main(){
ios::sync_with_stdio(false) ;
cin >> n ; int ans = 1 ;
for(int i = 1 ; i <= n ; i ++) cin >>q[i] ;
for(int i = 1 , j = 1 ; i <= n ; i++){
while(s[q[j]] ==0 && j <= n ) s[q[j]]++ ,j++; //j取寻找 固定i的前提下,j可以到多远
ans = max(ans , j-i) ;
s[q[i]]--;
if(j==n) break ; //可以加速break j都到n了,其实i++就没意义了,ans肯定大于后面的数值。
}
cout<<ans;
return 0 ;
}