思路
模拟题, 用一个set 和一个队列来完成这件事就行
ac 代码
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
int main()
{
set<int> vis ;
queue<int> mem;
int n , s ;
cin >> s >> n;
int cnt = 0 ;
for(int i = 0 ; i<n;i++)
{
int x ;
cin >> x;
if (vis.count(x)) continue;
else{
cnt ++ ;
vis.insert(x);
mem.push(x);
if (mem.size()>s)
{
int t = mem.front();
vis.erase(t);
mem.pop();
}
}
}
cout << cnt;
return 0;
}