摩尔投票
题目描述:有一个数组a = [3,1,3,2,3],获取数组里出现次数超过n/2的元素
数组 | 3 | 1 | 3 | 2 | 3 |
count | 1 | 0 | 1 | 0 | 1 |
candidate | 3 | 3 | 3 | 3 | 3 |
表格解释:a=[3,1,3,2,3],默认count=0, candidate=0
然后遍历表格,3第一次出现,记录次数count, 记录元素candidate,然后下一个元素,和candidate不同,count-1,candidate不变,再下一个元素,此时count=0,所以取新的值,candidate=a[3], count=1
相同元素count+1,candidate不变,不同元素count-1, candidate还是不变,当count为0时, 取新的元素为candidate