1.直接用vector模拟队列
#include <bits/stdc++.h>
using namespace std;
vector<int>a;
int main() {int m, n, x ,ans=0;cin >> m >> n;for (int i = 1; i <= n; i++) {cin >> x;if (find(a.begin(), a.end(), x) == a.end()) {a.push_back(x);ans++;}if (a.size() > m)a.erase(a.begin());}cout << ans;return 0;
}
2.用数组模拟队列
#include <bits/stdc++.h>
using namespace std;
int q[1005];//队列数组
int c[1005];//用来判断是否存入队列中
int main() {int n, m, x;cin >> m >> n;int head = 1, tail = 0;//队列的头和尾for (int i = 1; i <= n; i++) {cin >> x;if (!c[x]) {q[++tail] = x;c[x] = 1;}if (tail - head >= m) {c[q[head]] = 0;head++;}}//尾巴增加的次数即为查找次数cout << tail;return 0;
}