数组中出现次数超过一半的数字。
2015-07-08 09:06
141 查看
题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}, 由于数组中数字2出现了5次,超过数组的长度的一半,因此输出2。
int MoreThanHalfNum(int *arr, int len) { int ret = 0; int times = 0; int i = 0; for (; i < len; ++i) { if (times == 0) { ret = arr[i];//将arr[i]的值先保存在ret中 times = 1; } else if (arr[i] == ret) { times++; } else { times--; } } return ret; } int main() { int arr[] = {1, 2, 3, 2, 2, 2, 5, 4, 2}; int ret = MoreThanHalfNum(arr, sizeof(arr)/sizeof(int)); cout << ret << endl; return 0; }
相关文章推荐
- objc:NSDateFormatter使用备忘
- eclipse maven jetty启动修改默认端口
- 贝叶斯学习
- QT写入文本文件
- Algorithms—38.Count and Say
- Win10正式版之前更新了哪些内容
- 怎么做一个优秀的程序员
- Eclipse 导入项目出现乱码
- SQL Server根据分区表名查找所在的文件及文件组实现脚本
- Unity性能优化之Draw Call
- RHEL(RedHat) 6.3使用EPEL Yum 源
- ZOJ 3826 Hierarchical Notation 模拟
- android工作目录下.metadata文件夹的作用及各文件详解
- POJ 1860 Currency Exchange(Bellman-Ford)
- 如何禁止listview的item项获得焦点,而让item的子控件获得焦点
- MYSQL实时触发SQL SERVER 实例
- 验证hadoop伪分布式
- 【英文】20150708 生词
- CentOS搭建JDK+MySQL+Tomcat
- 模板方法模式