C++统计整数最高频率次数的实现与代码详解
根据题目要求,我们需要统计一组整数中出现频率最高的那个数出现的次数。 题目明确要求使用 `memset` 和 `max` 函数,并且数字大小不超过 100,因此可以采用**计数数组**的方法。 ## 🧠 解题思路 1. 因为每个整数不超过 100,所以我们可以开辟一个长度为 101 的数组(下标 0~100)来记录每个数字出现的次数。 2. 先用 `memset` 将计数数组初始化为 0。 3. 遍历输入的所有数字,对每个数字 `x`,执行 `cnt[x]++`。 4. 遍历计数数组,用 `max` 函数更新最大出现次数。 5. 输出最大出现次数。 --- ## 💻 C++ 代码实现 ```cpp #include <iostream> #include <cstring> // 使用 memset #include <algorithm> // 使用 max(或直接比较) using namespace std; int main() { int n; cin >> n; int cnt[101]; // 因为数字 <= 100 memset(cnt, 0, sizeof(cnt)); // 初始化所有计数为 0 for (int i = 0; i < n; i++) { int x; cin >> x; cnt[x]++; // 统计每个数字出现次数 } int maxCount = 0; for (int i = 0; i <= 100; i++) { maxCount = max(maxCount, cnt[i]); // 更新最大频率 } cout << maxCount << endl; return 0; } ``` --- ## 📘 代码关键点解释 - **`memset(cnt, 0, sizeof(cnt))`**: 将 `cnt` 数组的所有字节都设置为 0,这是初始化数组的常用高效方法。`sizeof(cnt)` 会自动计算整个数组的大小(单位字节),无需手动写长度。 - **`max(maxCount, cnt[i])`**: 这是 C++ 标准库 `<algorithm>` 中的函数,返回两个数中的较大值。每次循环将当前数字的出现次数与历史最大值比较并更新。 - **数组大小 101**: 因为输入整数范围为 `0 ≤ 每个整数 ≤ 100`,包括 100 本身,所以数组下标需要到 100,即长度 101。 --- ## 📊 样例验证 **样例1** 输入: ``` 7 4 5 5 1 5 1 5 ``` 计数数组结果:`cnt[1]=2, cnt[4]=1, cnt[5]=4` 最大次数 = `4`,输出 `4` ✅ **样例2** 输入: ``` 9 8 8 7 4 4 4 3 7 1 ``` 计数数组结果:`cnt[8]=2, cnt[7]=2, cnt[4]=3, cnt[3]=1, cnt[1]=1` 最大次数 = `3`,输出 `3` ✅ --- ## ⚠️ 开发建议与注意事项 - **边界考虑**:虽然题目保证 `n > 1`,但建议仍对 `n=1` 的情况做兼容(虽然不会出现)。 - **内存与性能**:数组长度固定为 101,非常节省空间,时间复杂度为 `O(n + 101)`,在题目限制下完全无忧。 - **头文件选择**:`<cstring>` 用于 `memset`,`<algorithm>` 用于 `max`。如果不使用 `max`,也可以直接写 `if (cnt[i] > maxCount) maxCount = cnt[i];`。 - **常见陷阱**:不要忘记 `memset` 的第三个参数必须是字节数,一般用 `sizeof(cnt)` 即可,不要手动写 `101 * sizeof(int)` 或写成 `101`,容易出错。 --- ######[AI写代码神器 | 865点数解答 | 2026-08-21 22:02:06]
- 判断超级幸运数:满足“纯4/7数位”或“4/7总个数为4或7”的整数计数(阿里通义 | 965点数解答 | 2026-03-13 12:15:06)156
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)563
- 深度揭秘 Oracle Workarea Size Policy:参数调优助力数据库性能飞升(阿里通义 | 372点数解答 | 2024-05-13 10:54:45)349
- C 语言:按特定顺序读入并输出浮点数、整数和字符(字节豆包 | 106点数解答 | 2024-09-26 00:32:40)418
- C语言:按序读入浮点数、整数、字符并按新顺序输出,附代码实现 (字节豆包 | 108点数解答 | 2024-09-30 22:54:08)431
- C语言:按特定顺序读入并输出浮点数、整数和字符,精确控制小数位(字节豆包 | 155点数解答 | 2024-10-08 22:06:18)423
- C++与Python:按特定顺序输入输出数据并保留浮点数两位小数的实现(字节豆包 | 168点数解答 | 2024-10-08 22:07:03)421
- C语言:按特定顺序读入再输出,含浮点数精确格式处理(字节豆包 | 105点数解答 | 2024-10-08 22:07:29)438
- C++ 混合类型数据格式化输入输出:按指定顺序输出并保留两位小数(字节豆包 | 187点数解答 | 2024-10-16 14:31:08)475
- C语言:实现混合类型数据格式化输入输出,代码超简单!(字节豆包 | 159点数解答 | 2024-10-16 14:32:18)467
- C语言:按特定格式输入并格式化输出整数、实数和字符(字节豆包 | 103点数解答 | 2024-10-24 11:12:53)509
- Java 实现:从点类到圆类,计算圆心坐标(50,30)、半径 4 的圆周长与面积(字节豆包 | 246点数解答 | 2024-11-11 16:36:30)434