mapp[1]++,mapp[1]--,然后询问mapp.size(),居然输出是1,这个mapp.size()记录的是出现过的不同的数而不是真实存在的不同的数?
#include<bits/stdc++.h>
using namespace std;
int n,m,l,r,ans=0x3f3f3f3f,ansl,ansr;
int a[1000010];
map<int,int> mapp;//记录不同人的画
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
l=1,r=1,mapp[a[1]]=1;//初始化
while(l<=r&&r<=n)
{
if(mapp.size()==m)//满足题意了,更新答案,推进左端点
{
if(r-l+1<ans)
{
ans=r-l+1;
ansl=l;
ansr=r;
}
mapp[a[l]]--;
l++;
}
else//不满足题意,推进右端点
{
r++;
mapp[a[r]]++;
}
}
cout<<ansl<<" "<<ansr;
return 0;
}