题解 | #农场牛群众数#

农场牛群众数

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

题解 | 农场牛群众数

语言: C++

知识点: 哈希表

分析: 使用unordered_map记录编号与其出现次数,同时定义变量记录当前的众数及其出现次数。依次遍历编号,遍历过程中维护unordered_map中的数据后判断当前编号的出现次数是否大于等于之前的众数的出现次数,若满足则更新当前众数及其出现次数,同时将此时的众数记录到结果集中。(需注意题目中提到若出现多个编号出现次数相同的情况,则选择编号最大的那一个,因此在更新当前众数时需要进行编号是否相等的额外判断及选择)

代码实现:

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

相关推荐

小覃1:硕士了还投助理岗位吗,一般不都直接干工程师了吗
点赞 评论 收藏
分享
03-19 18:10
已编辑
门头沟学院 Unity3D客户端
如题,鼠鼠快碎掉了。鼠鼠正在投暑期和日常的实习,可能是因为简历太差吧,好多初筛都没有过,所以其实格外珍惜每一次的约面。尤其鼠鼠是八股选手,但凡碰到喜欢问项目的面试官是直接速通鼠掉。那是一个万里无云的晚上,鼠鼠接到tx某子公司的约面,虽然没算法题但是问得我汗流浃背。面试官从我的八股批判到我的项目继而批判到我的实习,感觉基本上除了八股这种特定答案之外每一个问题都要质问我,尤其是询问到实习的时候我解释完之后直接来了一句“那你实习也啥也没做啊”,鼠鼠直接原地碎掉。之后的问题鼠鼠也不太记得了,大部分都是直接吟诵咒语,肌肉记忆直接不过脑子。因为接二连三的压力鼠鼠直接摆烂了,回答的时候也不太看屏幕直接开始搓...
机器人为什么是猫呀:楼主要自信。好的面试官是会照顾面试者情绪的,不会直接说那么伤人的话。面试表现其实很看自己的心态跟情绪,这些又和面试官的反馈很相关。而且有些面试官很高傲,不求甚解,自认为你的东西看一眼很简单,就不会听你说了,却没有从一个没有丰富工作经验的人的角度去思考。楼主不要因为这些影响心态,不要怀疑自己,只要遇到一个“合适”的面试官就会好很多的。
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务