题意
给出N个数,要求把其中重复的去掉,只保留第一次出现的数。
例如,给出的数为1 2 18 3 3 19 2 3 6 5 4,其中2和3有重复,去除后的结果为1 2 18 3 19 6 5 4。
最开始以为是平衡树题,然后发现可以hash乱搞,map水过
#include<map>
#include<cmath>
#include<cstdio>
#include<queue>
#include<vector>
#include<string>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
inline int read() {
int x = 0, flag = 1; char ch = getchar();
while (ch > '9' || ch < '0') { if (ch == '-') flag = -1; ch = getchar(); }
while (ch <= '9' && ch >= '0') { x = x * 10 + ch - '0'; ch = getchar(); }
return x * flag;
}
#define rep(ii, aa, bb) for (int ii = aa; ii <= bb; ii++)
#define drp(ii, aa, bb) for (int ii = aa; ii >= bb; ii--)
#define ll long long
#define N 50001
map<int, int> mp;
int main() {
int T = read();
while (T--)
{
int n = read(); mp.clear(); bool flag = true;
for (int i = 0; i<n; i++)
{
int t = read();
if (mp[t] == 0)
{
if (!flag) printf(" ");
printf("%d", t);
flag = false;
}
mp[t] = 1;
}
printf("\n");
}
return 0;
}