首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
牛客878400009号
长安大学 Java
发布于陕西
关注
已关注
取消关注
@牛客题解官:
数组中出现次数超过一半的数字
描述 这是一篇针对初学者的题解。共用三种方法解决。知识点:数组,排序,哈希难度:一星 题解 题目抽象:给定一个数组,找出数组中的众数,若有,返回众数,若没有,返回0众数定义:数组中出现次数大于数组一般的元素 方法一:哈希法 根据题目意思,显然可以先遍历一遍数组,在map中存每个元素出现的次数,然后再遍历一次数组,找出众数。 代码 class Solution {public: int MoreThanHalfNum_Solution(vector<int> numbers) { unordered_map<int,int> mp; for (const int val : numbers) ++mp[val]; for (const int val : numbers) { if (mp[val] > numbers.size() / 2 ) return val; } return 0; }};时间复杂度:O(n)空间复杂度:O(n) 方法二:排序法 可以先将数组排序,然后可能的众数肯定在数组中间,然后判断一下。 代码 class Solution {public: int MoreThanHalfNum_Solution(vector<int> numbers) { sort(numbers.begin(), numbers.end()); int cond = numbers[numbers.size() / 2]; int cnt = 0; for (const int k :numbers) { if (cond == k) ++cnt; } if (cnt > numbers.size() / 2) return cond; return 0; }};时间复杂度:O(nlongn)空间复杂度:O(1) 方法三:候选法(最优解) 加入数组中存在众数,那么众数一定大于数组的长度的一半。思想就是:如果两个数不相等,就消去这两个数,最坏情况下,每次消去一个众数和一个非众数,那么如果存在众数,最后留下的数肯定是众数。 具体做法: 初始化:候选人cond = -1, 候选人的投票次数cnt = 0 遍历数组,如果cnt=0, 表示没有候选人,则选取当前数为候选人,++cnt 否则,如果cnt > 0, 表示有候选人,如果当前数=cond,则++cnt,否则--cnt 直到数组遍历完毕,最后检查cond是否为众数 代码 class Solution {public: int MoreThanHalfNum_Solution(vector<int> numbers) { int cond = -1; int cnt = 0; for (int i=0; i<numbers.size(); ++i) { if (cnt == 0) { cond = numbers[i]; ++cnt; } else { if (cond == numbers[i]) ++cnt; else --cnt; } } cnt = 0; for (const int k :numbers) { if (cond == k) ++cnt; } if (cnt > numbers.size() / 2) return cond; return 0; }};时间复杂度:O(n)空间复杂度:O(1)
点赞 186
评论 21
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
03-29 22:23
杭州电子科技大学 大数据开发工程师
春招必看,HR最不可信的4句话
🏆 TOP 1:你面试已经通过了,目前正在走流程。这句话绝对是牛客网年度最让人心梗的句子,没有之一! “你还可以,但不是最优解。我们要先把你放进‘鱼池’里泡着,等后面几个候选人面完,如果他们太贵或者不来,我们再把你捞起来。”或者“HC(编制)还没批下来,先稳住你再说。”这个“流程”可能会走上一个月,最后告诉你“公司业务调整,HC锁了”或者直接养鱼养到失联。Offer一天没发到邮箱里,就一天不要停止面试! 哪怕HR在电话里说得再天花乱坠,口头Offer都是0约束力。该海投海投,该面试面试,用其他Offer去反向催进度才是王道。🤥 TOP 2:我们公司是扁平化管理,氛围特别好。刚毕业的小白最容...
HR最不可信的一句话是_...
点赞
评论
收藏
分享
04-02 22:20
已编辑
北京航空航天大学 算法工程师
字节国际广告实习一面过二面挂
一面: 十亿费用宣发会怎么选 手撕反转链表 二面: layer norm是什么,和bantch norm有什么区别 手撕一个layer norm实现 重点: 机器学习基础比较重要最后hr都会问“你还有什么问题想问我吗”:请问您觉得我在今天的面试当中有哪个环节答的好,或者有哪个环节的回答您特别不喜欢,您有什么好的改进建议?
查看5道真题和解析
点赞
评论
收藏
分享
03-28 16:16
杭州电子科技大学 Java
腾讯面试这个状态是啥意思
1jian10:
48h没写面评会变成这样
点赞
评论
收藏
分享
03-31 17:40
门头沟学院 算法工程师
找实习笑话
原来就算签了协议也是可以提前走的吗,有无有经验的前辈说说是真的吗
鲸鸿:
实习协议不用管签多久,要走的时候提前三天说就可以了
点赞
评论
收藏
分享
03-29 09:03
北京大学 Java
深圳程序员职业生涯
2016年大学本科毕业之后没有从事自己想要的工作选择。上海的工作并没有得到认可。年轻人是时代的弄潮儿。时尚和美观操控着每个应届毕业生的不服输心态。测试题目的检测开始好转并得到面试官技术认可。学校大学本科校招时间窗口期很多的知名公司会进入一些名校高等学府进行校园招聘。宣讲会听讲认真但是并没有发现什么长处。呆呆的看着大学生打篮球有的时候 完美世界 的宣讲会就没有再次参与。专业实习的笔试成绩前端技术勉强通过面试官的技术标准。不理想的笔试成绩很有可能会拦着大部分面试官。甲骨文Oracle公司的笔试成绩7分表示这方面可能并不弱。 突然要离开大学回到南方。无法释怀的是一些外国大学留学生的抛掷过来的奇怪眼...
Java技术
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
双非春秋招3月总结与收获
6098
2
...
4.2字节后端一面
4278
3
...
美团暑期二面,横向挂
4048
4
...
恒生电子笔试已燃尽
3672
5
...
26年最值得冲的产品项目是什么?一个过来人的大实话
3024
6
...
2026 产品岗春招|这种「稀缺管培生」该怎么准备?
2974
7
...
银行老学长带来点春招信息差
2751
8
...
恒生电子笔试
2651
9
...
28届双非本腾讯开发实习oc
1824
10
...
快手后端oc
1534
创作者周榜
更多
正在热议
更多
#
面试被问到不会的问题,你怎么应对?
#
24279次浏览
607人参与
#
牛友的志愿填报指南
#
62805次浏览
482人参与
#
厦门银行科技岗值不值得投
#
15485次浏览
355人参与
#
你觉得大几开始实习最合适?
#
28209次浏览
275人参与
#
uu们,春招你还来吗?
#
61957次浏览
713人参与
#
你见过哪些招聘隐形歧视?
#
23439次浏览
199人参与
#
招商银行数字金融训练营
#
106801次浏览
917人参与
#
面试中,你被问过哪些奇葩问题?
#
95590次浏览
1237人参与
#
学历VS实习,哪个更重要?
#
1341次浏览
39人参与
#
你都用vibe coding做过什么?
#
20675次浏览
783人参与
#
机械人,签完三方你在忙什么?
#
83794次浏览
266人参与
#
AI Coding实战技巧
#
14820次浏览
292人参与
#
国庆前的秋招小结
#
291037次浏览
1742人参与
#
哔哩哔哩笔试
#
34953次浏览
142人参与
#
如果人生可以debug你会改哪一行?
#
12387次浏览
157人参与
#
秋招特别不鸣谢
#
93086次浏览
685人参与
#
海康威视求职进展
#
132191次浏览
551人参与
#
应届生被毁约被毁意向了怎么办
#
65158次浏览
313人参与
#
你现在一天AI几次?
#
12725次浏览
127人参与
#
机械人你觉得今年行情怎么样?
#
7824次浏览
96人参与
#
稳定和高薪机械人更看重哪个?
#
577037次浏览
5565人参与
#
面试紧张时你会有什么表现?
#
33717次浏览
201人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务