审题:
数组不为空且一定存在众数。需要返回众数的数值
思路:
方法一:哈希映射
先用哈希映射去存储对应数据出现的次数,然后遍历找到众数并输出
当然也可以在第一次映射的过程中就维护一个出现次数最多的数据,这样子就可以减少一次循环遍历
方法二:排序
由于众数个数是大于n/2的,那么n/2索引位置的数据一定是众数,下面我们分类讨论
第一行是数据个数是偶数的情况:n/2的位置在3数据的位置,我们考虑极端情况
若众数都分布在n/2位置前面,那么众数最后一个数据的位置就在3的位置,也就是n/2位置
若都在其后面,那么众数第一个数据就在n/2位置
第二行是数据个数是奇数的情况:n/2还是在3的位置,极端情况
众数在n/2的前面,最后一个众数位置在n/2
在n/2后面,倒数第二个众数位置在n/2
而在非极端情况下,数据会分布在n/2周围,也满足n/2为众数的情况
解题:
方法一:哈希映射
方法二:排序
链接:169. 多数元素 - 力扣(LeetCode)