原题 :
给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。
你可以假设数组是非空的,并且给定的数组总是存在众数。
示例 1:
输入: [3,2,3]
输出: 3
示例 2:
输入: [2,2,1,1,1,2,2]
输出: 2
解 :
var majorityElement = function (nums) {
//Map:以键值对的形式保存,任何值(原始值或对象)都能够作为一个键或一个值
let map = new Map()
//num 如果只有一个,那么众数就直接返回
if (nums.length === 1) {
return nums[0]
}
for (let i = 0; i < nums.length; i++) {
if (map.get(nums[i]) !== undefined) {
//有的话就存入并数量加一
map.set(nums[i], map.get(nums[i]) + 1)
if (map.get(nums[i]) > nums.length / 2)
return nums[i]
} else {
//没有的话就存入,并设为初始数量1
map.set(nums[i], 1)
}
}
};