酷代码 AI
菜单
服务商

输入整数排序去重问题的C++代码实现及分析

### 👨‍💻题目分析 题目要求是输入`n`个在`1~1000`范围内的整数,将这些整数从小到大排序并且去重后输出。可以使用数组进行计数,因为数字范围是`1~1000`,数组的下标就可以表示对应的数字,数组元素的值表示该数字出现的次数。 ### 👨‍💻代码实现 ```cpp #include <iostream> using namespace std; // 定义一个长度为1001的数组用于计数,因为数字范围是1~1000 int n, x, a[1001]; int main() { // 读取输入的整数n,表示接下来要输入的数字个数 cin >> n; // 循环n次,读取每个数字 for (int i = 1; i <= n; i++) { // 读取当前数字x cin >> x; // 该数字对应的数组元素加1,表示该数字出现次数增加 a[x]++; } // 标记是否是第一个输出的数字,用于控制输出格式 bool first = true; // 遍历数组,从下标1到1000 for (int i = 1; i <= 1000; i++) { // 如果该下标的数组元素值大于0,说明该数字出现过 if (a[i] > 0) { // 如果不是第一个输出的数字,先输出一个空格进行分隔 if (!first) { cout << " "; } // 输出该数字 cout << i; // 标记已经不是第一个输出的数字了 first = false; } } // 输出换行符 cout << endl; return 0; } ``` ### 👨‍💻复杂度分析 - **时间复杂度**:代码中读取输入的时间复杂度为$O(n)$,遍历数组并输出结果的时间复杂度为$O(1000)$,综合来看时间复杂度为$O(n)$。 - **空间复杂度**:代码中使用了一个长度为`1001`的数组,空间复杂度为$O(1)$。 ######[AI问答 | 535点数解答 | 2026-04-04 20:04:41]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]