C++ 实现自然数出现次数统计并按顺序输出
以下是使用 C++ 语言解决该问题的代码: ```cpp #include <iostream> #include <map> using namespace std; int main() { int n; // 读取自然数的个数 cin >> n; // 使用 map 来统计每个自然数出现的次数 map<int, int> count; for (int i = 0; i < n; i++) { int num; // 读取每个自然数 cin >> num; // 如果该数已经在 map 中,将其出现次数加 1 if (count.find(num) != count.end()) { count[num]++; } else { // 如果该数不在 map 中,将其加入 map 并初始化出现次数为 1 count[num] = 1; } } // 遍历 map 并输出结果 for (auto it = count.begin(); it != count.end(); ++it) { // 输出自然数和该数出现的次数 cout << it->first << " " << it->second << endl; } return 0; } ``` ### 代码解释 1. **包含必要的头文件**:使用 `<iostream>` 进行输入输出操作,使用 `<map>` 来存储每个自然数及其出现的次数。 2. **读取输入**:首先读取自然数的个数 `n`,然后循环 `n` 次,每次读取一个自然数。 3. **统计次数**:使用 `map` 来统计每个自然数出现的次数。如果该数已经在 `map` 中,将其出现次数加 1;否则,将其加入 `map` 并初始化出现次数为 1。 4. **输出结果**:遍历 `map`,按照自然数从小到大的顺序输出每个自然数及其出现的次数。 ### 复杂度分析 - **时间复杂度**:$O(n log m)$,其中 $n$ 是自然数的个数,$m$ 是不同自然数的个数。主要是因为 `map` 的插入和查找操作的时间复杂度为 $O(log m)$。 - **空间复杂度**:$O(m)$,主要是 `map` 所占用的空间。 ######[AI问答 | 520点数解答 | 2026-05-30 20:19:45]
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)401
- 重新定义字母大小关系:让 “L 队” 字典序小于 “某 E” 的代码实现与分析(字节豆包 | 595点数解答 | 2025-12-03 19:44:59)94
- 深入解析格雷码生成算法:递归求解与代码实现(DeepSeek | 443点数解答 | 2026-01-05 12:21:49)81
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)366
- 星际编码大赛终极对决:机械星AI与异星人激战“逆序对”统计难题(字节豆包 | 509点数解答 | 2025-04-19 17:33:00)302
- C++高效求解1到n中能同时被2和3整除的数之和(DeepSeek | 1187点数解答 | 2026-04-11 10:03:38)36
- 用 Pandas 深度剖析数据:从读取到统计分析全流程实战(GPT | 642点数解答 | 2024-06-30 15:39:49)390
- 用 Pandas 深入分析招聘数据:从数据读取到可视化全流程解析(GPT | 1539点数解答 | 2024-06-30 15:56:50)413
- Python 实现:精确统计两数范围内素数个数,附完整代码与优化思路(阿里通义 | 292点数解答 | 2024-11-28 21:36:29)276
- Python 文件数量统计:检测当前及指定路径文件数并处理错误 (字节豆包 | 179点数解答 | 2024-12-11 13:09:13)221
- Python三关挑战:文件与文件夹数量统计及路径获取(字节豆包 | 493点数解答 | 2024-12-11 13:29:49)240
- Python实现:输入5个字符统计“0”出现次数及开发注意要点(字节豆包 | 255点数解答 | 2026-01-16 14:23:30)72