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
        Map<Integer, Integer> counter = new HashMap<>();
        List<Integer> res = new ArrayList<>();
        int maxCount = 0;
        int mode = 0;

        for (int num : nums) {
            counter.put(num, counter.getOrDefault(num, 0) + 1);
            if (counter.get(num) > maxCount || (counter.get(num) == maxCount &&
                                                num > mode)) {
                maxCount = counter.get(num);
                mode = num;
            }
            res.add(mode);
        }

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

编程语言是Java。

这道题的知识点包括使用哈希表(HashMap)来统计数字的出现次数,并找到出现次数最多的数字(众数)。

以下是代码的大致解释:

  1. 初始化变量 maxCount 和 mode,分别用于记录当前的最大出现次数和众数。
  2. 遍历输入数组 nums 中的每个元素 num:将 num 加入到哈希表 counter 中,并将其出现次数加一。如果 num 的出现次数超过了 maxCount,或者出现次数相等但 num 比当前的 mode 大,则更新 maxCount 和 mode。将当前的 mode 添加到数组 res 中。
  3. 将数组 res 转换为整型数组 result 并返回。
全部评论

相关推荐

头像
11-26 15:46
已编辑
中南大学 后端
字节国际 电商后端 24k-35k
点赞 评论 收藏
分享
10-09 00:50
已编辑
长江大学 算法工程师
不期而遇的夏天:1.同学你面试评价不错,概率很大,请耐心等待;2.你的排名比较靠前,不要担心,耐心等待;3.问题不大,正在审批,不要着急签其他公司,等等我们!4.预计9月中下旬,安心过节;5.下周会有结果,请耐心等待下;6.可能国庆节前后,一有结果我马上通知你;7.预计10月中旬,再坚持一下;8.正在走流程,就这两天了;9.同学,结果我也不知道,你如果查到了也告诉我一声;10.同学你出线不明朗,建议签其他公司保底!11.同学你找了哪些公司,我也在找工作。
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务