#include<bits/stdc++.h>
using namespace std;
/*
数据结构:队列queue
桶:标记某个单词是否出现在内存中
t[i]=false:不在 t[i]=true:在
对于读入的每个单词x:
如果不存在单词x
存储(入队)
t[x] = true
内存中元素个数(q.size())>M:
t[q.front()]=falses;
删除最早的单词 -> q.pop()
*/
bool t[1005];
queue<int>q;
int main(){
int m,n;
int cnt=0;
cin>>m>>n;
while(n--){
int x;
cin>>x;
if(!t[x]){ //如果当前字符串没出现过,则要进行一次存入的单词
q.push(x); // 存入
t[x]=true; // 标记x存在
cnt++; // 存入操作次数+1
if(q.size()>m){ // 如果容量超出m,删除最早出现的单词
t[q.front()]=false;
q.pop();
}
}
}
cout<<cnt;
return 0;
}
01-14
593
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)