[JLOI2011] 不重复数字
题目描述
给定 n n n 个数,要求把其中重复的去掉,只保留第一次出现的数。
输入格式
本题有多组数据。
第一行一个整数 T T T,表示数据组数。
对于每组数据:
第一行一个整数 n n n。
第二行 n n n 个数,表示给定的数。
输出格式
对于每组数据,输出一行,为去重后剩下的数,两个数之间用一个空格隔开。
样例 #1
样例输入 #1
2
11
1 2 18 3 3 19 2 3 6 5 4
6
1 2 3 4 5 6
样例输出 #1
1 2 18 3 19 6 5 4
1 2 3 4 5 6
提示
对于 30 % 30\% 30% 的数据, n ≤ 100 n \le 100 n≤100,给出的数 ∈ [ 0 , 100 ] \in [0, 100] ∈[0,100]。
对于 60 % 60\% 60% 的数据, n ≤ 1 0 4 n \le 10^4 n≤104,给出的数 ∈ [ 0 , 1 0 4 ] \in [0, 10^4] ∈[0,104]。
对于 100 % 100\% 100% 的数据, 1 ≤ T ≤ 50 1 \le T\le 50 1≤T≤50, 1 ≤ n ≤ 5 × 1 0 4 1 \le n \le 5 \times 10^4 1≤n≤5×104,给出的数在 32 32 32 位有符号整数范围内。
代码:
#include <iostream>
#include <map>
using namespace std;
const int N = 100010;
int y;
int main()
{
ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
int n;
cin >> n;
while (n--)
{
cin >> y;
map<int,int> mp;
for( int i = 0;i < y;i++ )
{
int x; cin >> x;
mp[x]++;
if (mp[x] == 1) cout << x << " ";
else continue;
}
cout << "\n";
}
return 0;
}