memset众数指的是一组数据中出现次数最多的数值。现在给定n个整数a1,a2,…,an,求出这组数据的众数,如果有多个,请按照从小到大的顺序输出所有的众数。
时间: 2024-02-12 07:05:49 浏览: 140
好的,这是一个简单的统计问题。可以使用哈希表进行统计,也可以使用桶排序。下面给出桶排序的实现方法:
1. 先找出给定数据中最大的数 maxNum。
2. 创建一个长度为 maxNum+1 的桶,用于存放每个数出现的次数。
3. 遍历给定数据,将每个数出现的次数加入对应的桶中。
4. 找出桶中出现次数最多的数值,即为众数。
5. 如果众数有多个,遍历桶,将所有出现次数等于众数的数值输出。
代码实现如下(使用 C++):
```c++
#include <iostream>
#include <vector>
using namespace std;
vector<int> majorityElement(vector<int>& nums) {
int maxNum = 0;
for (int num : nums) {
maxNum = max(maxNum, num);
}
vector<int> bucket(maxNum+1, 0);
for (int num : nums) {
bucket[num]++;
}
int maxCount = 0;
for (int count : bucket) {
maxCount = max(maxCount, count);
}
vector<int> res;
for (int i = 0; i < bucket.size(); i++) {
if (bucket[i] == maxCount) {
res.push_back(i);
}
}
return res;
}
int main() {
vector<int> nums = {1, 2, 2, 2, 3, 3, 4};
vector<int> res = majorityElement(nums);
for (int num : res) {
cout << num << " ";
}
return 0;
}
```
输出结果为:
```
2 3
```
阅读全文