题解 | #农场牛群众数# 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, 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语言进行编写。

该题考察的知识点主要有:

  • 使用Map来统计元素出现的次数。
  • 遍历Map的键值对,找到出现次数最多的元素。
  • 将结果存储在列表中,并将列表转换为数组。

代码的文字解释如下:

  1. counter用于计数每个元素出现的次数。
  2. modes用于存储出现次数最多的元素。
  3. 初始化变量maxCount为0,用于记录出现次数最多的元素的次数。
  4. 遍历数组nums,对于数组中的每个元素num:将num存入counter中并更新对应的次数。更新maxCount为当前元素出现的次数和maxCount的较大值。
  5. 遍历counter的键集合,对于每个键num:如果num出现的次数等于maxCount,将num存入modes中。
  6. 创建一个长度为modes的大小的整型数组result
  7. modes列表中的元素复制到result数组中。
  8. 返回result数组作为结果。
全部评论

相关推荐

MinJerous:虽然我一直说 计算机不怎么卡学历 但是至少得一本
点赞 评论 收藏
分享
Twilight_m...:经典我朋友XXXX起手,这是那种经典的不知道目前行情搁那儿胡编乱造瞎指导的中年人,不用理这种**
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务