import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param weightsA int整型一维数组 * @param weightsB int整型一维数组 * @return int整型 */ public int findMode (int[] weightsA, int[] weightsB) { // 哈希表 key用于存储100,200,300,400之类的体重 value用来存储100,200,300,400之类体重出现的频率 HashMap<Integer, Integer> hashMap = new HashMap<>(); // 分别遍历两个weight数组,记录体重和体重的频率,不了解getOrDefault的可以去查一下,挺简单 for (int i = 0; i < weightsA.length; i++) { hashMap.put(weightsA[i],hashMap.getOrDefault(weightsA[i],0)+1); } for (int i = 0; i < weightsB.length; i++) { hashMap.put(weightsB[i],hashMap.getOrDefault(weightsB[i],0)+1); } // 用entryset去遍历hash表,优先级value越大越好,在value相等的情况下,体重越重的优先级越高 Set<Map.Entry<Integer, Integer>> entries = hashMap.entrySet(); // 频率次数 int freq = 0; // 最终返回的结果 int result = 0; for (Map.Entry<Integer, Integer> entry : entries) { Integer value = entry.getValue(); if(value>freq){ freq = value; result = entry.getKey(); }else if(value==freq){ if(entry.getKey()>result){ result = entry.getKey(); } } } return result; } }
本题解题思路分析:
1.哈希表存储
2.hashMap存储和取出
3.注意getOrDefault这个API
4.哈希表遍历
本题解题思路分析:
1.用哈希表取存储 体重和体重出现的频率
2.遍历哈希表,比较出在频率次数出现最多的情况下,最重的牛,返回即可