题解 | #农场牛群众数# java

农场牛群众数

https://www.nowcoder.com/practice/de4e4039a45247579ffeef81ccf44266

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param nums int整型一维数组
     * @return int整型一维数组
     */
    public int[] findMode (int[] nums) {
        // write code here
        HashMap<Integer, Integer> mp = new
        HashMap<>(); // 存储编号与出现次数的映射
        ArrayList<Integer> resList = new
        ArrayList<>(); // 存储最终各个众数结果
        int maxC = 0, maxN = nums[0]; // 记录当前众数及其出现的次数
        for (int i = 0; i < nums.length; i++) {
            mp.put(nums[i], mp.getOrDefault(nums[i],
                                            0) + 1); // 当前编号的出现次数加一
            if (mp.get(nums[i]) >=
                    maxC) { // 若当前的编号出现次数大于等于之前的众数的出现次数,则当前编号变为新的众数
                maxN = mp.get(nums[i]) == maxC ? Math.max(maxN,
                        nums[i]) : nums[i]; // 根据题意,若出现次数相同的情况,选择数值更大的做为最终结果。
                maxC = mp.get(nums[i]); // 更新新的众数出现次数
            }
            resList.add(maxN); // 将此时的众数加入结果集中
        }

        int[] res = new int[resList.size()];
        for (int i = 0; i < resList.size(); i++) {
            res[i] = resList.get(i);
        }
        return res;
    }
}

编程语言是Java。

该题考察的知识点包括:

  • 使用哈希映射(HashMap):用于存储数字与出现次数的关系,以便统计众数。
  • 数组的遍历和操作:遍历输入数组,将结果存入新的数组中。

代码的简短文字解释:众数是指在数组中出现次数最多的数字。通过使用哈希映射来记录每个数字的出现次数,同时使用两个变量 maxCmaxN 来跟踪当前的众数和其出现次数。在遍历输入数组的过程中,根据出现次数的不同情况,更新最终的众数和出现次数,并将当前的众数加入结果集。最后,将结果集转换为整数数组并返回作为输出。

全部评论

相关推荐

03-26 13:44
南华大学 Java
在看面经的花生米很野蛮:这种情况下你当然要回答,你也是吗!!!!我超喜欢他的XXXXX
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务