摩尔投票算法
从一个元素序列中获取出现频率大于⌊ n/2 ⌋(向下取整)的元素。
-
如果不存在这个数则返回的结果具有任意性
-
假如存在那么只会存在一个这个数,结果具有唯一性
初始化第一个元素出现(权重为1),遍历元素序列,如果后面的元素与之相同则计数加1(表示当前的出线元素的权重),不同则需要抵消权重,如果权重为0,则是当前元素元素出线(初始化权重为1),如此遍历元素,会得到权重不为一的元素,该元素就是最终结果。
当存在满足要求的元素的时候,从整体上来看这个算法,满足要求的元素的权重是一定大于或者等于1的。关于权重的抵消,类似于擂台赛事,最终站在擂台上的才是最终结果。当有满足要求的元素,那么最终站在擂台上的一定是该元素,如果不存在那么最终擂台上的元素受元素顺序的影响。