//#include<bits/stdc++.h>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
#include<map>
#include<set>
using namespace std;
int n,a[1000100];
set<int>all;
map<int,int>mp;
int main()
{
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%d",&a[i]),all.insert(a[i]);
int len=all.size();
int res=n;
int l=0,r=0,cmp=0;
while(true)
{
while(r<n&&cmp<len)
if(mp[a[r++]]++==0) cmp++;
if(cmp<len) break;
res=min(res,r-l);
if(--mp[a[l++]]==0) cmp--;
}
printf("%d\n",res);
return 0;
}
POJ 3320 Jessica's Reading Problem (尺取法)
最新推荐文章于 2024-02-16 17:44:03 发布
本文介绍了一种基于C++实现的滑动窗口算法,该算法用于从输入数组中找到覆盖所有不同元素的最短子数组长度。通过使用set和map数据结构来跟踪已遍历的不同元素及其出现次数。
393

被折叠的 条评论
为什么被折叠?



