题解 | #农场牛群众数# 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 来跟踪当前的众数和其出现次数。在遍历输入数组的过程中,根据出现次数的不同情况,更新最终的众数和出现次数,并将当前的众数加入结果集。最后,将结果集转换为整数数组并返回作为输出。
