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

dev*_*ull 6 c++

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

Dr.*_*ius 15

这是Boyer的投票算法.

太空中也是O(1)!

编辑

对于抱怨网站配色方案的人(像我一样)...... 这是原始论文.

  • 该链接上的配色方案非常糟糕. (3认同)
  • 以下是一些更多信息:http://stackoverflow.com/questions/780937/linear-time-voting-algorithm-i-dont-get-it (2认同)