C++题目描述从电脑输入n个随机的数据将这n个数据按照第一次出现的顺序进行输出如果某个数据出现了多次则只输出一次即可。输入描述输入总共两行第一行一个整数n数据规模 1≤n≤1e5第二行输入n个需要待处理的数据x对于100的数据处于 0≤x≤32767输出描述输出总共一行表示这些数据按照首次出现顺序去重的结果样例1输入101024 2 2 10 10 10 10 1024 666 1024输出1
解题思路:
- 创建一个unordered_set来存储已经出现过的数据;
- 创建一个vector来存储按照首次出现顺序去重的结果;
- 从输入中读取n个数据,并判断是否已经在unordered_set中出现过;
- 如果没有出现过,则将其加入到unordered_set中,并将其加入到vector中;
- 最后按照vector的顺序输出结果。
C++代码实现如下:
#include <iostream>
#include <unordered_set>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
unordered_set<int> appeared;
vector<int> result;
for (int i = 0; i < n; i++) {
int num;
cin >> num;
if (appeared.find(num) == appeared.end()) {
appeared.insert(num);
result.push_back(num);
}
}
for (int i = 0; i < result.size(); i++) {
cout << result[i] << " ";
}
return 0;
}
时间复杂度分析: 该算法只需要遍历一遍输入数据,时间复杂度为O(n)
原文地址: https://www.cveoy.top/t/topic/h2xv 著作权归作者所有。请勿转载和采集!