《剑指Offer》数组中出现次数超过一半的数字
来源:互联网 发布:火箭vs雷霆数据 编辑:程序博客网 时间:2024/05/29 08:49
题目描述:
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。
思路:将这些数放到map中,first值为出现的数,second的值为出现次数,看最大的second值是否大于mid,大于则返回这个first;否则返回0.
代码:
class Solution {public: int MoreThanHalfNum_Solution(vector<int> numbers) { unordered_map<int,int> res; int len = numbers.size(); int mid = len/2;// 一半数大小 for(int i = 0;i < len;++i){ if(res.count(numbers[i])){//如果原来有这个数,这个数对应的次数加1 res[numbers[i]]+=1; } else{//如果原来没有这个数,插入,出现次数置为1 res.insert(make_pair(numbers[i],1)); } } for(unordered_map<int,int>::iterator iter = res.begin();iter!=res.end();++iter){ if(iter->second > mid){//遍历map,如果second值也就是出现次数大于mid,返回first,也就是这个数 return iter->first; } } return 0;//否则返回0 }};
输出结果: 运行时间: 1 ms 占用内存:496K 状态:答案正确
阅读全文
0 0
- 剑指offer--数组中出现次数超过一半的数字
- 《剑指offer》数组中出现次数超过一半的数字
- 剑指offer:数组中出现次数超过一半的数字
- 【剑指Offer】数组中出现次数超过一半的数字
- 剑指offer:数组中出现次数超过一半的数字
- 数组中出现次数超过一半的数字||剑指offer
- 剑指offer 数组中出现次数超过一半的数字
- 剑指offer:数组中出现次数超过一半的数字
- [剑指offer]数组中出现次数超过一半的数字
- 《剑指offer》-数组中出现次数超过一半的数字
- 剑指offer|数组中出现次数超过一半的数字
- 剑指offer-数组中出现次数超过一半的数字
- 《剑指offer》数组中出现次数超过一半的数字
- 剑指offer - 数组中出现次数超过一半的数字
- 剑指Offer:数组中出现次数超过一半的数字
- 剑指offer-数组中出现次数超过一半的数字
- 剑指offer:数组中出现次数超过一半的数字
- 剑指offer 数组中出现次数超过一半的数字
- Zabbix3.2.6 修改agentd.conf
- 更新AndroidStudio 遇到的Grade问题
- 自旋锁公平性的三种实现
- ES6中的顶层对象的属性和global对象
- 深入理解Java类加载器(1):Java类加载原理解析
- 《剑指Offer》数组中出现次数超过一半的数字
- 手势识别项目总结
- 最小生成树总结
- 开源个小工具simple-repo
- 深入理解Java类加载器(2):线程上下文类加载器
- JAVA开发环境搭建中配置环境变量错误产生JAVAC' 不是内部或外部命令‘
- 52.网络参数管理者: DHCP
- React Native组件(三)Text组件解析
- 聊聊分布式事务