题解 | #农场牛群众数# 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 HashMap<Integer, Integer> mp = new HashMap<>(); // 存储编号与出现次数的映射 ArrayList<Integer> resList = new ArrayList<>(); // 存储最终各个众数结果 int maxC = 0, maxN = nums[0]; // 记录当前众数及其出现的次数 for (int i = 0; i < nums.length; i++) { mp.put(nums[i], mp.getOrDefault(nums[i], 0) + 1); // 当前编号的出现次数加一 if (mp.get(nums[i]) >= maxC) { // 若当前的编号出现次数大于等于之前的众数的出现次数,则当前编号变为新的众数 maxN = mp.get(nums[i]) == maxC ? Math.max(maxN, nums[i]) : nums[i]; // 根据题意,若出现次数相同的情况,选择数值更大的做为最终结果。 maxC = mp.get(nums[i]); // 更新新的众数出现次数 } resList.add(maxN); // 将此时的众数加入结果集中 } int[] res = new int[resList.size()]; for (int i = 0; i < resList.size(); i++) { res[i] = resList.get(i); } return res; } }
编程语言是Java。
该题考察的知识点包括:
- 使用哈希映射(HashMap):用于存储数字与出现次数的关系,以便统计众数。
- 数组的遍历和操作:遍历输入数组,将结果存入新的数组中。
代码的简短文字解释:众数是指在数组中出现次数最多的数字。通过使用哈希映射来记录每个数字的出现次数,同时使用两个变量 maxC
和 maxN
来跟踪当前的众数和其出现次数。在遍历输入数组的过程中,根据出现次数的不同情况,更新最终的众数和出现次数,并将当前的众数加入结果集。最后,将结果集转换为整数数组并返回作为输出。