问题描述:
给定一个整型序列,要求统计出现次数最多的整数及其出现次数。
解决方法:
要解决这个问题,可以使用哈希表(unordered_map)来记录每个整数出现的次数。具体步骤如下:
1. 创建一个空的哈希表 freq,用于记录每个整数出现的次数。
2. 读取输入的整数个数 N。
3. 循环读取 N 个整数,对于每个整数 num:
- 若 num 已经存在于哈希表中,则将对应的出现次数加一。
- 若 num 不在哈希表中,则将其添加到哈希表中,并将出现次数初始化为 1。
4. 遍历哈希表,找到出现次数最多的整数及其出现次数:
- 初始化变量 maxNum 和 maxFreq,分别表示出现次数最多的整数和出现次数。
- 遍历哈希表中的每个键值对 (num, freq):
- 若 freq 大于 maxFreq,则将 maxNum 更新为当前整数 num,将 maxFreq 更新为当前出现次数 freq。
5. 输出结果 maxNum 和 maxFreq。
下面是相应的代码实现:#include <iostream>#include <unordered_map>using namespace std;int main() { int N; cin >> N; unordered_map<int, int> freq; for (int i = 0; i < N; i++) { int num; cin >> num; if (freq.count(num) > 0) { freq[num]++; } else { freq[num] = 1; } } int maxNum, maxFreq = 0; for (auto it = freq.begin(); it != freq.end(); it++) { if (it->second > maxFreq) { maxNum = it->first; maxFreq = it->second; } } cout << maxNum << " " << maxFreq << endl; return 0;}
希望这个解答对你有帮助!如果还有其他问题,请随时提问。
球一个最佳答案谢谢啦!这对我非常重要!   |