题目
给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋
的元素。
你可以假设数组是非空的,并且给定的数组总是存在众数。
示例1:
1 | 输入: [3,2,3] |
示例2:
1 | 输入: [2,2,1,1,1,2,2] |
提示:
n == nums.length
1 <= n <= 5 * 104
-109 <= nums[i] <= 109
解法
解法一:
既然众数是出现次数大于数组长度一半的数,那么,在排序之后,数组长度一半的位置上的数肯定是众数。
Java
1 | class Solution { |
解法二:
摩尔投票法
从第一个数开始count=1,遇到相同的就加1,遇到不同的就减1,减到0就重新换个数开始计数。
Java
1 | public int majorityElement(int[] nums) { |