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数组作为结果。

京公网安备 11010502036488号