酷代码 AI
菜单
服务商

c++题目描述 给定含有 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; bool first = true; for (int num : numbers) { // 如果数字未在集合中出现过 if (seen.find(num) == seen.end()) { // 如果不是第一个数字,在前面加一个空格 if (!first) { std::cout << " "; } std::cout << num; // 将该数字加入集合 seen.insert(num); first = false; } } std::cout << std::endl; return 0; } ``` 代码解释: 1. 输入读取:首先读取正整数 `n`,表示序列中数字的个数。接着使用 `for` 循环读取 `n` 个整数,并将它们存储在 `std::vector<int>` 类型的 `numbers` 向量中。 2. 去重处理:使用 `std::unordered_set<int>` 类型的 `seen` 集合来记录已经出现过的数字。遍历 `numbers` 向量,对于每个数字,检查它是否已经在 `seen` 集合中。如果不在集合中,说明是第一次出现,将其输出,并将该数字插入到 `seen` 集合中。 3. 输出格式:为了确保输出的数字之间只有一个空格分隔,使用 `first` 布尔变量来标记是否是第一个输出的数字。如果不是第一个数字,在输出当前数字之前先输出一个空格。 4. 结束输出:最后输出换行符,结束程序。 [2026-01-16 20:44:24 | AI问答 | 459点数解答]

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