酷代码 AI
菜单
服务商

题目描述 给定含有 n 个整数的序列,要求对这个序列进行去重操作。所谓去重,是指对这个序列中每个重复出现的数,只保留该数第一次出现的位置,删除其余位置。 输入 输入包含两行: 第一行包含一个正整数 n(1 ≤ n ≤ 20000),表示第二行序列中数字的个数。 第二行包含 n 个整数,整数之间以一个空格分开。每个整数大于等于 1、小于等于 5000。 输出 输出只有一行,按照输入的顺序输出其中不重复的数字,整数之间用一个空格分开。c++

```cpp #include <iostream> #include <vector> #include <unordered_set> int main() { int n; std::cin >> n; std::vector<int> numbers(n); for (int i = 0; i < n; ++i) { std::cin >> numbers[i]; } std::unordered_set<int> seen; std::vector<int> result; for (int num : numbers) { if (seen.find(num) == seen.end()) { result.push_back(num); seen.insert(num); } } for (int i = 0; i < result.size(); ++i) { if (i > 0) { std::cout << " "; } std::cout << result[i]; } std::cout << std::endl; return 0; } ``` 代码解释 1. 输入处理: - 首先读取整数 `n`,它代表序列中数字的个数。 - 接着读取 `n` 个整数,存储在 `numbers` 向量中。 2. 去重操作: - 使用 `unordered_set` 类型的 `seen` 集合来记录已经出现过的数字。 - 遍历 `numbers` 向量,对于每个数字,如果它不在 `seen` 集合中,就将其添加到 `result` 向量中,并把它插入到 `seen` 集合里。 3. 输出结果: - 遍历 `result` 向量,按顺序输出其中的元素,元素之间用空格分隔。最后换行。 [2026-02-07 20:22:09 | AI问答 | 382点数解答]

相关提问
发财导航,免费问AI
实用工具查看更多