投票【摩尔投票法】

摩尔投票法(Boyer–Moore Majority Vote Algorithm) 是一种在 O(n) 时间、O(1) 空间 内,找出数组中出现次数超过 ⌊n/2⌋ 的元素(多数元素)的算法。

 

摩尔投票法就是:多数元素和其他元素两两抵消,剩下的一定是多数。

 

它解决什么问题?

给定一个数组,找出其中出现次数 大于 n/2 的元素(假设一定存在)。

 

核心思想

不同的元素两两“互相抵消”,最后剩下的那个一定是多数元素。

 

算法规则

维护两个变量:

遍历数组:

  1. 如果 count == 0 → 选当前元素为 candidate

  2. 如果当前元素 == candidate count++

  3. 否则 count--

 

示例代码

 

 

重要注意点

前提条件: 必须保证多数元素存在

 

操作系统与体系结构类似的应用场景

 

总结优势: 常数空间(O(1)),单遍扫描(Streaming),去噪声