C++ 一招搞定:从 100 万个 IP 中找出最多的 100 个!附哈希表解决方案
这个问题可以通过使用哈希表或者优先队列来解决。以下是一个使用哈希表的解决方案: ```cpp #include <iostream> #include <unordered_map> #include <vector> #include <algorithm> std::vector<std::pair<int, std::string>> getTop100(const std::vector<std::string>& ips) { std::unordered_map<std::string, int> count; for (const auto& ip : ips) { count[ip]++; } std::vector<std::pair<int, std::string>> result; for (const auto& pair : count) { result.push_back(pair); } std::sort(result.begin(), result.end(), [](const auto& a, const auto& b) { return a.first > b.first; }); result.resize(100); return result; } int main() { std::vector<std::string> ips = {"192.168.1.1", "192.168.1.2", "192.168.1.3", "192.168.1.4", ..., "192.168.1.1000000"}; std::vector<std::pair<int, std::string>> top100 = getTop100(ips); for (const auto& pair : top100) { std::cout << pair.second << ": " << pair.first << std::endl; } return 0; } ``` 这个程序首先遍历所有的IP地址,将它们的出现次数存储在一个哈希表中。然后,它将哈希表中的所有元素添加到一个向量中,并按照出现次数进行排序。它只保留前100个元素。 注意,这个程序假设IP地址的格式是"xxx.xxx.xxx.xxx",并且所有的IP地址都是有效的。如果IP地址的格式不正确,或者有无效的IP地址,那么这个程序可能会出错。 ######[AI写代码神器 | 435点数解答 | 2023-11-09 00:44:19]
- 导出功能优化:解决多次导出、过程异常、失败提示及完成通知问题 (DeepSeek | 1点数解答 | 2025-02-12 17:35:54)187
- 补全代码:将数组所有元素赋值为 100 并输出(字节豆包 | 164点数解答 | 2025-11-01 19:14:57)101
- C++实现图像模糊化处理:含代码、解释与复杂度分析(字节豆包 | 670点数解答 | 2025-11-10 18:55:33)111
- C++实现图像像素灰度值模糊化处理:输入输出全解析(字节豆包 | 655点数解答 | 2025-12-01 14:24:01)89
- Python 实现图像模糊化:输入像素值,输出处理后图像(附代码及详细解释)(字节豆包 | 555点数解答 | 2025-12-09 12:22:26)89
- 揭秘软件工程师视角:域名与 IP 一对多关系,一个 IP 能否对应多个域名? (百度文心 | 61点数解答 | 2023-11-09 18:19:12)378
- Python 实现 DES 加密算法编程实验:从原理到单步调试全解析(字节豆包 | 4096点数解答 | 2025-11-09 22:06:30)73
- 神秘数据背后的信息解读:样例输入与输出探秘(字节豆包 | 28点数解答 | 2024-12-12 11:56:59)409
- ✅ 八连通山谷计数:Python 实现与边界细节全解析(阿里通义 | 1450点数解答 | 2026-03-16 12:21:41)14
- C#工程师必知:数组、链表、哈希、队列、栈数据结构优缺点大揭秘! (百度文心 | 561点数解答 | 2023-11-09 17:56:30)264
- 从 MySQL 到达梦:`getOrgParentMsg` 存储过程的全面修改指南(DeepSeek | 621点数解答 | 2025-03-25 10:26:15)215
- C++ 实现:快速查找 n 个正整数中的第 x 个数(字节豆包 | 380点数解答 | 2025-11-08 19:23:39)172