题解 | #农场牛群众数#

农场牛群众数

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

考察的知识点:哈希;

解答方法分析:

  1. 创建一个空的哈希表,用于记录数字及其出现次数。
  2. 创建两个变量:amount和value,分别用于存储记录的最大次数和对应的数字。
  3. 创建一个长度与输入数组相同的空数组arr,用于存储每个元素的众数。
  4. 遍历输入数组nums的每个元素:在哈希表中获取当前数字nums[i]的出现次数。如果没有出现过,则使用getOrDefault方法将其次数设为0,并加1。如果出现过,则累加1。将获取到的出现次数count与amount进行比较:如果count大于amount,将value设为当前数字nums[i],amount设为count。如果count等于amount,将value更新为value和当前数字nums[i]的较大值。将value存储在数组arr的相应位置。
  5. 返回数组arr。

所用编程语言:C++;

完整编程代码:↓

class Solution {
  public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param nums int整型vector
     * @return int整型vector
     */
    vector<int> findMode(vector<int>& nums) {
        unordered_map<int, int> map;
        int amount = 0;
        int value = 0;
        vector<int> arr(nums.size());
        for (int i = 0; i < nums.size(); i++) {
            map[nums[i]]++;
            int count = map[nums[i]];
            if (count > amount) {
                value = nums[i];
                amount = count;
            } else if (count == amount) {
                value = max(value, nums[i]);
            }
            arr[i] = value;
        }
        return arr;
    }
};

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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