Java 题解 | #农场牛群众数#
农场牛群众数
https://www.nowcoder.com/practice/de4e4039a45247579ffeef81ccf44266
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型一维数组
* @return int整型一维数组
*/
public int[] findMode (int[] nums) {
// write code here
Map<Integer, Integer> counter = new HashMap<>();
List<Integer> res = new ArrayList<>();
int maxCount = 0;
int mode = 0;
for (int num : nums) {
counter.put(num, counter.getOrDefault(num, 0) + 1);
if (counter.get(num) > maxCount || (counter.get(num) == maxCount &&
num > mode)) {
maxCount = counter.get(num);
mode = num;
}
res.add(mode);
}
int[] result = new int[res.size()];
for (int i = 0; i < res.size(); i++) {
result[i] = res.get(i);
}
return result;
}
}
编程语言是Java。
这道题的知识点包括使用哈希表(HashMap)来统计数字的出现次数,并找到出现次数最多的数字(众数)。
以下是代码的大致解释:
- 初始化变量
maxCount和mode,分别用于记录当前的最大出现次数和众数。 - 遍历输入数组
nums中的每个元素num:将 num 加入到哈希表 counter 中,并将其出现次数加一。如果 num 的出现次数超过了 maxCount,或者出现次数相等但 num 比当前的 mode 大,则更新 maxCount 和 mode。将当前的 mode 添加到数组 res 中。 - 将数组
res转换为整型数组result并返回。
查看5道真题和解析