相关疑难解决方法(0)

线性时间投票算法.我不明白

当我读到这个(找到数组中最常见的条目)时,建议使用Boyer和Moore的线性时间投票算法.

如果您点击该站点的链接,则会逐步说明该算法的工作原理.对于给定的序列,AAACCBBCCCBCC它提供了正确的解决方案.

当我们将指针向前移动到元素e上时:

  • 如果计数器为0,我们将当前候选设置为e,并将计数器设置为1.
  • 如果计数器不为0,我们根据e是否是当前候选者来递增或递减计数器.

当我们完成时,如果存在多数,则当前候选者是多数元素.

如果我在一张纸上使用这个算法AAACCBB作为输入,建议的候选人将成为B显然是错误的.

我认为,有两种可能性

  1. 作者从未在其他任何事情上尝试过他们的算法AAACCBBCCCBCC,完全不称职,应该当场解雇(怀疑).
  2. 我显然遗漏了一些东西,必须从Stackoverflow中被禁止,并且再也不允许触及任何涉及逻辑的东西.

注意:这是Niek Sanders 的算法的C++实现.我相信他正确地实现了这个想法,因此它有同样的问题(或者不是吗?).

language-agnostic puzzle algorithm

42
推荐指数
3
解决办法
1万
查看次数

标签 统计

algorithm ×1

language-agnostic ×1

puzzle ×1