首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
牛客850765491号
西安电子科技大学 C++
发布于广东
关注
已关注
取消关注
@牛客题解官:
数组中出现次数超过一半的数字
描述 这是一篇针对初学者的题解。共用三种方法解决。知识点:数组,排序,哈希难度:一星 题解 题目抽象:给定一个数组,找出数组中的众数,若有,返回众数,若没有,返回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)
点赞 180
评论 20
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
今天 18:11
门头沟学院 后端
京东测评,你别太离谱
做了京东的测评,这个题目我只能说太离谱了有没有种可能我会来参加京东的测评就是有神秘人通过电视、手机等在暗暗地给我发信号
投递京东等公司10个岗位
点赞
评论
收藏
分享
08-12 12:10
四川大学 机械工程师
oppo秋招
有没有佬知道我这是挂了还是没挂没收到ai面也没收到测评...
投递OPPO等公司8个岗位
点赞
评论
收藏
分享
06-26 11:08
北华航天工业学院 嵌入式软件开发
已经不知道该怎么办了,是简历有问题吗😭😭
半解316:
内容充实,细节需要修改一下。 1,整体压缩为一页。所有内容顶格。 2,项目描述删除,直接写个人工作量 修改完之后还需要建议,可以私聊
点赞
评论
收藏
分享
07-15 11:14
西安科技大学 Java
ai一查才知道很多企业都算大厂
人的认知还是太狭隘了,我理解中的大厂就只有什么华为什么腾讯字节这种耳熟能详的,所以看到很多之前没有听说过名字的公司,以为就是一些中小厂,上ai一查才发现,我去,什么行业龙头,我去,怎么办公室有一栋楼,我去这是什么时候变成这么大规模的。不过可能我认知中的大厂没有那么大,客观来说大厂必须得万人规模,但是我觉得能有千人就已经很大了😭能进这种公司就满足了😭求职的时候全靠ai来搜索公司到底是什么行业的有什么产品,不然我哪里知道……
不太迷人的反派_:
哪有什么大厂不大厂,只有干活的牛马和轻松的牛马
你找工作的时候用AI吗?
点赞
评论
收藏
分享
不愿透露姓名的神秘牛友
今天 10:15
谁知道荣耀这个岗笔试什么内容,几道题
投递荣耀等公司8个岗位
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
给26届小伙伴们一些建议
8175
2
...
面试不要紧张,人生的容错率高的可怕
7607
3
...
半夜12点都叫提前下班了?
7093
4
...
大家辛辛苦苦秋招 结果你作弊拿到了字节算法sp
6443
5
...
字节三面-会赢吗
5426
6
...
如何提高秋招面试成功率?
5071
7
...
26前端校招 腾讯wxg 3面 面经
4453
8
...
秋招第一个offer 附tl
4207
9
...
8.14 腾讯TEG-云架构平台部-后台开发一面凉经
3819
10
...
个人对八股的认识
3804
创作者周榜
更多
正在热议
更多
#
你怎么看待AI面试
#
7022次浏览
83人参与
#
我的省钱小妙招
#
22557次浏览
366人参与
#
实习需要主动找活干吗?
#
7707次浏览
86人参与
#
移动求职进展汇总
#
5798次浏览
50人参与
#
转正答辩报告怎么写
#
4096次浏览
39人参与
#
你觉得技术面多长时间合理?
#
104750次浏览
750人参与
#
业务面应该做哪些准备
#
3103次浏览
83人参与
#
大厂面试问八股多还是项目多?
#
5204次浏览
88人参与
#
小米硬件提前批进度交流
#
175185次浏览
1542人参与
#
面试太紧张了怎么办?
#
7927次浏览
173人参与
#
你有没有为省钱「拼过命」
#
3351次浏览
68人参与
#
你是如何祛除班味的
#
2908次浏览
49人参与
#
机械专业只有考研才有出路吗
#
124298次浏览
890人参与
#
你被mentor骂过吗?
#
14221次浏览
89人参与
#
机械人,你最希望上岸的公司是?
#
175571次浏览
1874人参与
#
我想去国央企的原因
#
62986次浏览
397人参与
#
kpi面有什么特征
#
64742次浏览
437人参与
#
小米提前批笔试难吗
#
37264次浏览
366人参与
#
饿了么求职进展汇总
#
67501次浏览
654人参与
#
秋招投递记录
#
36184次浏览
397人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务