摩尔投票算法的时间和空间都很低,时间复杂度为
算法原理:每次从数组中找出一对不同的元素,将它们从数组中删除,直到遍历完整个数组。由于这道题已经说明一定存在一个出现次数超过一半的元素,所以遍历完数组后数组中一定会存在至少一个元素。
m 和一个计数器 i,初始化的情况下计数器为 0;x 的时候,如果计数器为 0,那么将 x 赋值给 m,然后将计数器(i)设置为 1;0,那么将序列元素 m 和 x 比较,如果相等,那么计数器加 1,如果不等,那么计数器减 1。m,就是这个序列中最多的元素。(如果不确定是否存储的元素 m 是最多的元素,还可以进行第二遍扫描判断是否为最多的元素)