题目:多数元素
给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。
你可以假设数组是非空的,并且给定的数组总是存在多数元素。
示例:
输入:[3,2,3] 输出:3
输入:[2,2,1,1,1,2,2] 输出:2
题解:
方法1:hash
step1:定义一个hash
step2:遍历数组nums,以key-value的形式,key:当前数字,value:数字出现的次数
step3:输出value大于一半所对应的数字
/**
* @param {number[]} nums
* @return {number}
*/
var majorityElement = function(nums) {
let map = new Map()
for(let i = 0;i<nums.length;i++){
if(!map.has(nums[i])){
map.set(nums[i],1)
}else{
map.set(nums[i],map.get(nums[i])+1)
}
}
for (let [key, value] of map.entries()) {
// 根据题目条件
if (value > nums.length / 2) {
// 返回键名
return key
}
}
};
方法2:投票法
博客围绕数组中多数元素的查找展开,多数元素指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。给出两种题解,一是使用 hash 法,遍历数组以 key-value 形式记录数字及其出现次数,输出出现次数大于一半的数字;二是投票法。
535

被折叠的 条评论
为什么被折叠?



