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 并返回。
全部评论

相关推荐

投递大华股份等公司10个岗位
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-27 10:28
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务