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) { wei.put(v, wei.getOrDefault(v, 0) + 1); } for (int v : weightsB) { wei.put(v, wei.getOrDefault(v, 0) + 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)来统计权重出现的频率,并找到出现频率最高的权重。
代码的文字解释大纲如下:
- 声明
findMode
方法,该方法接受两个参数weightsA
和weightsB
,都是整型列表。 - 创建一个
HashMap
对象wei
来存储权重和对应的频率。 - 遍历
weightsA
列表中的每个元素v
,将其作为键,将其在wei
中对应的值加 1。 - 遍历
weightsB
列表中的每个元素v
,同样将其作为键,将其在wei
中对应的值加 1。 - 初始化变量
ans
和aans
分别为 -1 和 0,用于记录出现次数最多的权重和其频率。 - 遍历
wei
中的每个键值对entry
:获取键 key 和对应的值 value。如果 value 大于或等于 ans,则判断 key 是否大于 aans,如果是,则更新 ans 和 aans 的值。 - 返回
aans
作为出现频率最高的权重。