思路比较简单,如果单词不在队列中那么压入队列,计数器加一,如果超内存则弹出队首的单词。代码如下:
#include <iostream>
#include <queue>
#include <algorithm>
using namespace std;
queue < int > q;
int m, n;
int main()
{
int tmp;
cin >> m >> n;
int sum = 0;
for (int i = 0; i < n; i++)
{
cin >> tmp;
if (find(&q.front(), &q.back() + 1, tmp) != &q.back() + 1)
{
continue;
}
sum++;
if (q.size() + 1 > m) q.pop();
q.push(tmp);
}
cout << sum;
}