题目链接
题目梗概
输入队列长度m,元素个数n和n个元素。n个元素依次入队,如果队中有相同元素则无须入队;如果队列已满,则需队首出队然后当前元素再入队。输出入队的次数。
解题思路
使用C++中queue容器进行模拟,同时建立inQueue数组记录某元素是否在队列中,以方便入队时判断。
完整代码
#include <iostream>
#include <queue>
#include <cstring>
using namespace std;
int inQueue[1000];
int main(){
memset(inQueue, 0, sizeof(inQueue));
int m, n;
cin >> m >> n;
int word;
int ans = 0;
queue<int> q;
for(int i = 0;i < n;++i){
cin >> word;
if(!inQueue[word]){
if(q.size() >= m){
inQueue[q.front()] = 0;
q.pop();
}
q.push(word);
inQueue[word] = 1;
++ans;
}
}
cout << ans;
return 0;
}