原题 :

给定一个大小为 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)
        }
    }
};
Last Updated: 4/3/2020, 6:21:54 PM