此题解包含数据结构: queue \color{white}\colorbox{red}{queue} queue、 map \color{white}\colorbox{red}{map} map。
思路
使用 map 统计当前数字出现的个数。用队列存起来这个数,方便后面查询。
最后检查队首,如果 m p i = 1 mp_i=1 mpi=1,则输出 i i i。否则证明 i i i 重复出现,不满足条件,pop 出队列,继续检查队首。
code
#include <bits/stdc++.h>
#define ll long long
#define inl inline
#define Ofast ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)
using namespace std;
map<int, int> mp;
queue<int> q;
int main() {
Ofast;
int n;
cin >> n;
for (int i = 1; i <= n; i++) {
int a;
cin >> a;
if (mp[a] == 0) {
q.push(a);
}
mp[a]++;
}
while (!q.empty()) {
if (mp[q.front()] == 1) {
cout << q.front() << endl;
}
q.pop();
}
return 0;
}