算法概述
摩尔投票算法经常用于求众数的题目,即,求 出现次数>n/k
的数,可以证明,出现次数超过 n/k
的数最多只有 k-1
个。否则必然违背「数总共只有 n
个」或者「当前统计的是出现次数超过 n/k
的数」的前提条件。
- 我们可以设定
k-1
个变量来记录最终结果。 - 以
k-1=3
为例,所求结果设为k1
、k2
,用两个变量n1
、n2
分别记录k1
、k2
的出现次数。遍历给定的数组nums
,设 当前便利的到的元素为nums[i]
,分情况处理:n1==0
,此时需要更换k1
,k1=nums[i]
。n2==0
,此时需要更换k2
,k2=nums[i]
。n1>0
且nums[i]==k1
,n1++
。n2>0
且nums[i]==k2
,n2++
。- 不属于以上四种情况则表明&#x