题解 | #农场牛群众数#
农场牛群众数
https://www.nowcoder.com/practice/de4e4039a45247579ffeef81ccf44266?tpId=354&tqId=10595468&ru=/exam/oj&qru=/ta/interview-202-top/question-ranking&sourceUrl=%2Fexam%2Foj%3Fpage%3D1%26tab%3D%25E7%25AE%2597%25E6%25B3%2595%25E7%25AF%2587%26topicId%3D354
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型一维数组
* @return int整型一维数组
*/
public int[] findMode (int[] nums) {
// write code here
int[] result = new int[nums.length];
Map<Integer, Integer> countMap = new HashMap<>();
int maxCount = 0;
int majority = nums[0];
for (int i = 0; i < nums.length; i++) {
int num = nums[i];
countMap.put(num, countMap.getOrDefault(num, 0) + 1);
if (countMap.get(num) > maxCount || (countMap.get(num) == maxCount && num > majority)) {
maxCount = countMap.get(num);
majority = num;
}
result[i] = majority;
}
return result;
}
}
知识点:
- HashMap:用于存储每个编号的牛出现的次数。
- 循环遍历数组:遍历输入的牛编号数组,统计每个编号出现的次数,并更新最大次数和众数。
- getOrDefault 方法:用于获取 Map 中键对应的值,如果键不存在,则返回默认值。
- 数组操作:将每次的众数添加到结果数组中。
解题思路:
使用一个 HashMap 来记录每个编号出现的次数。我们遍历输入数组,对于每个编号,将其出现次数记录在 countMap 中,并同时更新最大次数和众数。最后,将每次的众数添加到结果数组中。
查看11道真题和解析
