数组中出现次数超过一半的数字(算法)
2015-08-25 20:51
519 查看
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。
class Solution { public: int MoreThanHalfNum_Solution(vector<int> numbers) { int len = numbers.size(); if(len <= 0) return 0; int times = 0; int num = numbers[0]; for(int i = 0; i < len;i++) { if(times == 0) { times = 1; num = numbers[i]; } else { if(num == numbers[i]) times++; else times--; } } times = 0; for(int i = 0; i < len; i++) { if(num == numbers[i]) times++; } if(times * 2 > len) return num; return 0; } };
相关文章推荐
- 大龄屌丝自学笔记--Java零基础到菜鸟--011
- PHP扩展模块安装
- URI(URL) 允许的字符
- HDOJ 1005 Number Sequence(规律)
- PXE安装 系统
- BZOJ2773
- python爬取ajax动态生成的数据 以抓取淘宝评论为例子
- html5 触摸事件
- python中的正则表达式
- Linux内核工程导论——内存管理(二)
- java.net.UnknownHostException: Unable to resolve host "xxx": No address associated with hostname
- Java实现数据结构与算法-链表
- 纯汇编点亮led-以替代uboot的方式执行
- hashset和hashmap的区别
- c与c++ static函数的区别
- ubuntu14.04的 firefox搜索框,一选中,字就没了
- poj 3687 Labeling Balls 【拓扑排序】
- [solr] - solr5.2.1环境搭建 - 使用solr自带的jetty服务器
- 剑指offer 算法 (时间空间效率的平衡)
- 1712: 编程语言 (规律题)