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
并返回。