c – O(n)算法找出出现超过n / 2次的元素

我在一次采访中被要求给出一个O(n)算法来打印一个在数组中出现超过n / 2次的元素,如果有这样的元素的话. n是数组的大小.
我对如何做到这一点没有任何线索.有人可以帮忙吗?

解决方法

这是 Boyer’s Voting algorithm.

太空中也是O(1)!

编辑

对于抱怨网站配色方案的人(像我一样)… here is the original paper.

相关文章

首先GDB是类unix系统下一个优秀的调试工具, 当然作为debug代...
1. C语言定义1个数组的时候, 必须同时指定它的长度.例如:int...
C++的auto关键字在C+⬑新标准出来之前基本...
const关键字是用于定义一个不该被改变的对象,它的作用是告诉...
文章浏览阅读315次。之前用C语言编过链表,这几天突然想用C+...
文章浏览阅读219次。碰到问题就要记录下来,防止遗忘吧。文章...