当前位置:   article > 正文

[经典面试题]169. 多数元素

[经典面试题]169. 多数元素

题目描述

给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。

你可以假设数组是非空的,并且给定的数组总是存在多数元素。

示例 1:

输入:nums = [3,2,3]
输出:3

示例 2:

输入:nums = [2,2,1,1,1,2,2]
输出:2

解题方法分析: 

使用哈希算法(HashMap)来存储每个元素以及出现的次数。通过求解哈希映射中的每个键值对,键表示一个元素,值表示该元素出现的次数,统计出数组出现的数字次数最多的那一过。

首先循环遍历数组 nums 并将数组中的每个元素加入哈希映射中。在这之后,我们遍历哈希映射中的所有键值对,返回值最大的键,这样就可以通过哈希统计出出现次数最多的数字。

代码:

  1. class Solution {
  2. public:
  3. int majorityElement(vector<int>& nums) {
  4. // 使用map来记录每个数字的出现次数
  5. std::map<int, int> counts;
  6. // majority用于记录当前的多数元素,cnt用于记录多数元素出现的次数
  7. int majority = 0, cnt = 0;
  8. // 遍历输入数组
  9. for (int num : nums) {
  10. // 将当前数字的出现次数加一
  11. ++counts[num];
  12. // 如果当前数字的出现次数超过之前记录的多数元素的次数
  13. if (counts[num] > cnt) {
  14. // 更新多数元素和出现次数
  15. majority = num;
  16. cnt = counts[num];
  17. }
  18. }
  19. // 返回最终找到的多数元素
  20. return majority;
  21. }
  22. };

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/blog/article/detail/57239
推荐阅读

  • dockerclient会默认把Dockerfile同级所有文件发给dockerDeamon_dockerfile优化速度dockerfile优化速度通过Dockerfile创建容器的时候,有时候会遇到编译巨慢的情况,而dockerrun的... [详细]

  • ①首先需要开启邮箱的smtp服务,现在很多邮箱默认关闭smtp,pop3,imap服务,需要登录邮箱后在设置中手动开启。需要实现邮件发送的功能,对过程进行一下记录。②引入JakartaMail依赖包。Java通过JakartaMail实现邮... [详细]

  • 参加会议的记录【中关村开源生态论坛暨大模型智能应用技术大会】——探索AI和开源在未来的应用... [详细]

  • Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(全套教程文末领取哈)_2023年中国程序员人数饱和吗2023年中国程序员人数饱和吗前言IT... [详细]

  • 1.打jarspringboot打jar就比较简单,如果你们的是前后端分离的,而且要前端和后端不打一个包,有可能部署在两台不同的服务器上,你们首要就是解决跨域的问题,nginx是解决跨域问题的好帮手,你可以上网查一下怎么解决。我的项目是前后... [详细]

  • 什么是正则表达式正则表达式又称规则表达式,英文名为RegularExpression在代码中简写为regex、regexp或RE。正则表达式通常被用来检索、替换那些符合某个模式的文本1.0简单的正则表达式例:him,history,hig... [详细]

  • ​雅克比迭代就是众多迭代中比较早且较简单的一种,其命名也是为纪念普鲁士著名数学家雅可比。雅克比迭代的计算公式简单,每迭代一次只需计算一次矩阵和向量的乘法,且计算过程中原始矩阵A始终不变,比较容易进行计算。雅可比迭代是数字解法,然而该方... [详细]

  • preg_match('/^(?!_)(?!.*?_$)[\x{4e00}-\x{9fa5}A-Za-z0-9_]+$/u',$data)转载于:https://my.oschina.n..._datarule只允许字母和下划线正则表达式... [详细]

  • weibo_crawle可以做轻度微博数据采集。一、支持爬虫用户信息抓取用户微博抓取(全量/指定时间段)用户社交关系抓取(粉丝/关注)微博评论抓取基于关键词和时间段(粒度到小时)微博抓..._weibo-crawlerweibo-cra... [详细]

  • Dockerfile-ADD/COPY指令_dockerfileadd换成copydockerfileadd换成copyADD/COPY指令前言ADD作用格式使用示例COPY作用格式使用示例ADDCOPY的区别前言本篇来学习下Docker... [详细]

  • 软件工程专业是2002年国家教育部新增热门专业计算机科学与技术学科为基础培养适应计算机应用学科发展特别是软件产业发展毕业后可在IT行业、科研机构、企事业中从事计算机应用软件系统开发和研制高级软件工程技术人才。这不仅是个人... [详细]

  • 主要是在抓包分析怎么实现分页获取,通过抓包分析,我们知道每次请求获取照片的时候,返回的数据中都会有一个。用过上述分析我们就可以轻松获取数据了。当请求为最后一页数据的时候,_微博相册爬虫微博相册爬虫难点分析主要是在抓包分析怎么实现分页获取,通... [详细]

  • C++面试题-----Qt基础知识Qt信号与槽Qt信号与槽的优势和不足自定义信号槽注意事项:信号槽的多种用法:TCP/UDP描述Qt下Tcp通信的整个流程描述QT下udp通信的整个流程多线程描述QT下多线程的两种使用方法,以及注意事项多线程... [详细]

  • 在构建网络框架后,运行代码,发现很多tensor出现了inf或者nan,在很多博客上没有找到对应的解决方法,大部分是基于numpy写的,比较麻烦。下面基于torchBIF函数实现替换这2个。a=torch.Tensor([[1,2,np... [详细]

  • 相关标签
      

    闽ICP备14008679号