如果当前单词不在队列中,就把其放入队列并标记为已存在.如果放入当前单词之后,队列的大小为 m + 1了,就把队头删除.
队列(std::queue)基本操作:
std::queue<Type> q;
//定义队列q,Type为数据类型,如 int . folat . char等
q.push(x); //把 x 放进队列
q.front(); //返回队首元素,但不会删除
q.pop(); //删除队首元素
q.back(); //返回队尾元素
q.size(); //返回元素个数
q.empty(); //返回 0/1 检查队列是否为空
Code:
std::queue :
#include <bits/stdc++.h>
using i64 = long long;
int main() {
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
int m, n, cnt = 0;
std::cin >> m >> n;
std::vector<int> a(n);
std::map<int, bool> vis;
std::queue<int> q;
for (int i = 0; i < n; i++) {
std::cin >> a[i];
if (!vis[a[i]]) {
q.push(a[i]);
cn