反思,debug不出来就赶紧看题解把!
题解
双指针,双指针有好几种,这个是像弹簧(窗口)一样的双指针,右指针一直往右走,当成立时,左指针一直往左走直到不成立
code
#include<bits/stdc++.h>
using namespace std;
int a[1000006]={0};
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)cin>>a[i];
map<int,int> cnt;
int l=1,minlen=n+1,ends,uni=0,start;
for(int i=1;i<=n;i++)
{
if(cnt[a[i]]++==0)uni++;
while(uni==m)
{
if(i-l+1<minlen)
{
minlen=i-l+1;
start=l;
ends=i;
}
if(--cnt[a[l++]]==0)uni--;
}
}
cout<<start<<" "<<ends;
return 0;
}
标签:画展,int,题解,cin,tie,P1638,指针
From: https://www.cnblogs.com/pure4knowledge/p/17968271