代码1:------->滑动窗口做法:
#include<iostream>
using namespace std;
const int N=1010;
const int M=1e6+10;
int st[M];
int a[N];
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
}
int res=0;
int x=0;
int cnt=0;
for(int i=0;i<n;i++){
if(!st[a[i]])
cnt++;
st[a[i]]++;
while(cnt>2){
st[a[x]]--;
if(!st[a[x]])
cnt--;
x++;
}
res=max(res,st[a[i]]);
}
cout<<res<<endl;
return 0;
}
此代码类型来自 最长连续不重复子序列
代码2------->暴力枚举:
#include<iostream>
#include<set>
#include<vector>
using namespace std;
const int N=1010;
int a[N];
set<int>res;
vector<int>r;
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
res.insert(a[i]);
}
int ans=0;
for(auto &t:res){
for(int i=0;i<n;i++){
if(a[i]==t)
continue;
else{
r.push_back(a[i]);
}
}
int p=0,q=0;
for(int i=0;i<r.size();i++){
if(i&&r[i]==r[i-1]){
q++;
}
else{
ans=max(ans,q-p+1);
q=i;
p=i;
}
}
ans=max(ans,q-p+1);
r.clear();
}
cout<<ans<<endl;
return 0;
}