1 | 给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。 |
设一个cnt的计数器和暂存中间结果的res。
对于每一个数,如果cnt=0,则更新res,否则如果num和res相等++cnt,如果不等–cnt。
如果res的cnt从0增长又衰减到0,说明此位置及前面等于res和不等于res的值一样多,再继续循环时更新res,因为众数大于一半,所以如果前面的res如果是最终值,那么res还会被更新为前面的那个值,如过前面的res不是最终值,那么res会被更新为后面出现次数多的值。
此方法条件是这个数出现次数超过一半。
1 | class Solution { |