问题描述
有 50 个数( 0∼19),求这 50个数中相同数字出现的最多次数为几次?
输入
50 个数字。
输出
1 个数字(即相同数字出现的最多次数)。
样例
输入
1 10 2 0 15 8 12 7 0 3 15 0 15 18 16 7 17 16 9 1 19 16 12 17 12 4 3 11 1 14 2 11 14 6 11 4 6 4 11 13 18 7 0 3 2 3 18 19 2 16
输出
4
C++
#include <iostream>
#include <vector>
#include <unordered_map>
using namespace std;int getMaxOccurrences(vector<int>& nums) {unordered_map<int, int> countMap;for (int num : nums) {countMap[num]++;}int maxOccurrences = 0;for (auto it = countMap.begin(); it != countMap.end(); ++it) {if (it->second > maxOccurrences) {maxOccurrences = it->second;}}return maxOccurrences;
}int main() {vector<int> nums(50);for (int i = 0; i < 50; i++) {cin >> nums[i];}int maxOccurrences = getMaxOccurrences(nums);cout << maxOccurrences << endl;return 0;
}
当我们需要求解一个数组中相同数字出现的最多次数时,我们可以按照以下步骤进行计算:
- 首先,我们读取输入的 50 个数字,并将它们存储在一个整数向量
nums
中。 - 我们使用一个函数
getMaxOccurrences
来计算相同数字出现的最多次数。函数接受一个整数向量nums
作为参数,并返回一个整数表示相同数字出现的最多次数。 - 在
getMaxOccurrences
函数中,我们使用一个无序映射countMap
来存储每个数字出现的次数。 - 使用一个循环,遍历数组
nums
中的每个数字。对于每个数字,我们在countMap
中查找对应的键值对,如果找到,则将其值加一;否则,将其插入到countMap
中,并将值初始化为 1。 - 创建一个变量
maxOccurrences
,用于存储相同数字出现的最多次数的初始值为 0。 - 使用另一个循环,遍历
countMap
中的每个键值对。对于每个键值对,我们将其值与maxOccurrences
进行比较,如果大于maxOccurrences
,则将其更新为新的最大值。 - 循环结束后,
maxOccurrences
中存储的就是相同数字出现的最多次数。 - 在
main
函数中,我们调用getMaxOccurrences
函数,并将计算得到的相同数字出现的最多次数存储在maxOccurrences
变量中。 - 最后,将
maxOccurrences
输出。
通过以上的步骤,我们可以计算出数组中相同数字出现的最多次数,并将结果输出。
希望以上解释对您有帮助。如果您还有其他问题,请随时提问。