import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param weightsA int整型一维数组
* @param weightsB int整型一维数组
* @return int整型
*/
public int findMode (int[] weightsA, int[] weightsB) {
// write code here
Map<Integer, Integer> wei = new HashMap<>();
for (int v : weightsA) {
if (wei.containsKey(v)) {
wei.put(v, wei.get(v) + 1);
} else {
wei.put(v, 1);
}
}
for (int v : weightsB) {
if (wei.containsKey(v)) {
wei.put(v, wei.get(v) + 1);
} else {
wei.put(v, 1);
}
}
int ans = -1;
int aans = 0;
for (Map.Entry<Integer, Integer> entry : wei.entrySet()) {
int key = entry.getKey();
int value = entry.getValue();
if (value >= ans) {
if (key > aans) {
ans = value;
aans = key;
}
}
}
return aans;
}
}
使用的是Java语言。
该题考察的知识点主要有:
- 使用HashMap来统计元素出现次数。
- 遍历数组并更新HashMap中的值。
- 遍历HashMap找到出现次数最多且值最大的元素。
代码的文字解释如下:
- 遍历数组
weightsA,对于每个元素v,判断是否已存在于wei中。如果存在,通过wei.get(v) + 1获取当前元素出现的次数,并使用wei.put(v, ...)将更新后的次数存入wei。如果不存在,表示此元素第一次出现,将其加入wei并设置出现次数为1。 - 同样地,遍历数组
weightsB,对于每个元素v,判断是否已存在于wei中。如果存在,通过wei.get(v) + 1获取当前元素出现的次数,并使用wei.put(v, ...)将更新后的次数存入wei。如果不存在,表示此元素在之前的遍历中未出现过,将其加入wei并设置出现次数为1。 - 初始化变量
ans为-1,用于记录出现次数最多的元素的次数。 - 初始化变量
aans为0,用于记录出现次数最多且值最大的元素。 - 遍历
wei,对于每个键值对entry:获取键key和对应的值value。如果当前元素的出现次数value大于等于ans,则更新ans和aans:如果当前元素的值key大于aans,则更新ans为value,aans为key。 - 遍历结束后,返回
aans作为结果,即出现次数最多且值最大的元素。

京公网安备 11010502036488号