数组中出现次数超过一半的数字

image.png
数组中出现次数超过一半的数字” 简称为 “众数” 。

题解

排序

数组中点的元素一定就是超过数组长度一半的那个元素,按照从小到大排列
image.png
这个方法有点秀

哈希表统计法 键值对

getOrDefault(Object key, V defaultValue) 

这个函数是如果map中存在这个key,那就返回这个key本身的value,如果不存在这个key,那就返回这个key默认的defaultValue,也就是这个函数键后面带的那个defaultValue
如果这个键的值超过了长度的一半,那就说明就是这个键就是题目要求,因为只有一个元素可以超过数组长度的一半
image.png

摩尔投票法

image.png
image.png
image.png
image.png
这个投票法有意思

  • 因为题目说了一定存在一个众数,如果题目没有说,如果可能不存在众数,那就需要重新考虑
  • image.png
    最后那个要加一个验证,看这个最后剩下的数,他的长度是不是大于数组的一半

Loccy
4 声望1 粉丝