题解 | #农场牛群众数# 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, 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语言进行编写。
该题考察的知识点主要有:
- 使用
Map
来统计元素出现的次数。 - 遍历
Map
的键值对,找到出现次数最多的元素。 - 将结果存储在列表中,并将列表转换为数组。
代码的文字解释如下:
counter
用于计数每个元素出现的次数。modes
用于存储出现次数最多的元素。- 初始化变量
maxCount
为0,用于记录出现次数最多的元素的次数。 - 遍历数组
nums
,对于数组中的每个元素num
:将num存入counter中并更新对应的次数。更新maxCount为当前元素出现的次数和maxCount的较大值。 - 遍历
counter
的键集合,对于每个键num
:如果num出现的次数等于maxCount,将num存入modes中。 - 创建一个长度为
modes
的大小的整型数组result
。 - 将
modes
列表中的元素复制到result
数组中。 - 返回
result
数组作为结果。