Majority Element
来源:互联网 发布:淘宝店铺地址哪里看 编辑:程序博客网 时间:2024/06/07 12:14
一看到要计数的,首先想到了hash表。不过本人的hash表很简单,就是一个数组而已,hash函数也仅仅是取余数这么简单,但明显是扩展不能的(如果int数组的数值都很大,那么size要爆)。后来用例的一个-1直接完爆本人的取余哈希表。。。个人觉得一道easy题还要写二次探测的hash表是不合格的hash。。。
于是翻看解答,一个叫Moore voting algorithm的算法很简单有效,不过该算法应该只适用于target出现次数一定大于n/2的数组,如果出现次数不足那么算法失效,所以觉得还是不够普适。穆勒算法维护一个count和一个候选者,顺序遍历,如果遇到相同的则count++,不同count--,当count = 0时下一个num就是候选者。因为出现次数一定大于n/2,根据抽屉原则一定有至少2个target是相邻的,因此一定能得出结果。
如下:
int majorityElement(int num[], int n) { int count = 0; int candidate = 0; for (int i = 0; i < n; i++) { if (count == 0) { candidate = num[i]; } if (candidate == num[i]) { count++; } else { count--; } } return candidate;}
0 0
- majority element
- Majority Element
- Majority Element
- Majority Element
- Majority Element
- Majority Element
- Majority Element
- Majority Element
- Majority Element
- Majority Element
- Majority Element
- Majority Element
- Majority Element
- Majority Element
- Majority Element
- majority element
- Majority Element
- Majority Element
- p122.14
- 学习笔记
- 不用AuxDIBImageLoad()向opengl中载入bmp纹理
- ClassLoader介绍及ClassLoader.loadClass和Class.forName()的比较
- nyoj 18 The Triangle 【经典dp】
- Majority Element
- 双系统(win8.1+ubuntu14.04)删除win下分区导致grub rescue解决方案
- 给N条边,请找三条边,使其组成一个三角形,并使得这个三角形的周长最大。
- 可微与连续
- 【C++】用函数模板实现不同类型的两个数比较大小
- substr截取字符串
- hdu Exploration (并查集 拓扑 强连通)
- 在Android开发中,有哪些好的内存优化方式?
- Python 3.x中使用print函数出现语法错误(SyntaxError: invalid syntax)的原因