题目链接:https://www.acwing.com/problem/content/description/801/
题目如下:
#include <iostream>
#include <unordered_map>
#include <limits.h>
using namespace std;
const int N=100010;
int arr[N];
int maxlen(int n);
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++) cin>>arr[i];
//carl哥的滑动窗口
cout<<maxlen(n)<<endl;
return 0;
}
int maxlen(int n){
int res=INT_MIN;
int l=0;
unordered_map<int,int> umap;
for(int r=0;r<n;r++){
umap[arr[r]]++;
while(umap[arr[r]]>=2){
umap[arr[l++]]--;//关键处
}
res=max(res,r-l+1);
}
if(res==INT_MIN) return 0;
else return res;
}