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

标签 c++

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

最佳答案

Boyer's Voting algorithm .

在太空中也是 O(1)!

编辑

对于那些提示网站配色方案的人(比如我)... here is the original paper .

关于c++ - O(n) 算法找出出现超过 n/2 次的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4496002/

相关文章:

c++ - std::function 可以用来存储带有可变参数的函数吗

java - Guis 中的失效/刷新系统算法

c++ - Xcode 是否会去除依赖项 (OSX) 的调试符号并将它们放入 .dSYM 中?

c++ - 访问结构中的字符指针

c++ - 将项目添加到列表控件时 UI 卡住

c++ - <cmath> 或 <math.h> 真的需要吗?没有它编译

c++ - 从热键启动时 SendInput 到 Ctrl+C 文本不起作用

c++ - 制作几何库的良好设计方法(关于是否使用 union )?

c++ - 如何将有向图(邻接表)传递给 Dijkstra 算法 boost 以找到最短路径?

c++ - 错误 : expression must be a modifiable lvalue