题解 | #牛的体重统计# java
牛的体重统计
https://www.nowcoder.com/practice/15276ab238c9418d852054673379e7bf
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
作为结果,即出现次数最多且值最大的元素。