双序列,利用集合将元素不重复放入序列b
#include <iostream>
#include <set>
#include <vector>
using namespace std;
int main() {
int T = 0;
cin >> T;
while (T--)
{
int n = 0;
cin >> n;
vector<int> arr;//序列a
vector<int> brr;//序列b
set<int> is_exist; //验证存在的集合
//遍历输入,同时将所有元素放入存在验证集合
for (int i = 0; i < n; i++)
{
int a = 0;
cin >> a;
arr.emplace_back(a);
//如果集合中没有
if (!is_exist.count(a))
{
//计入集合
is_exist.insert(a);
}
}
//遍历,将不同的元素塞入序列b
for (int i = 0;i < n; i++)
{
//如果arr[i]在is_exist中存在(说明之前已经出现过),那么我们将arr[i]加入brr,并且从is_exist中删除arr[i]。
if (is_exist.count(arr[i]))
{
brr.push_back(arr[i]);
is_exist.erase(arr[i]); // 确保每个重复元素只加一次
}
}
//遍历输出
for (int i = 0; i < brr.size(); i++)
{
cout << brr[i];
if (i != brr.size() - 1)
{
cout << " ";
}
}
cout << "\n";
}
return 0;
}

京公网安备 11010502036488号