set(洛谷)P4305不重复数字
程序员文章站
2024-03-16 22:43:52
...
题目:给定n个数,要求把其中重复的去掉,只保留第一次出现的数。
输入格式:
本题有多组数据。第一行一个整数T,表示数据组数。
对于每组数据:
第一行一个整数n,第二行n个数,表示给定的数。
输出格式:
对于每组数据,输出一行,为去重后剩下的数,两个数之间用一个空格隔开。
样例输入:
2
11
1 2 18 3 3 19 2 3 6 5 4
6
1 2 3 4 5 6
样例输出:
1 2 18 3 19 6 5 4
1 2 3 4 5 6
解题思路:输入每个数字都用set判断,没存在过就放入,同时添加进数组,存在过就下一个,最后输出数组即可
#include<bits/stdc++.h>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
int t; cin >>t;
while (t--){
int n; cin >> n;
vector<int> ans;
set<int> s;
for (int i = 1 ; i <= n ; i++){
int x; cin >> x;
if (s.find(x) != s.end()) continue;
ans.push_back(x);
s.insert(x);
}
for (auto g : ans) cout << g << " ";
cout << endl;
}
return 0;
}