剑指offer[28]——数组中出现次数超过一半的数字
Posted jacob98
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指offer[28]——数组中出现次数超过一半的数字相关的知识,希望对你有一定的参考价值。
题目描述
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。
这道题目的思路其实比较简单,就是新建一个临时对象来存储每个数字出现的次数,对输入的数组进行遍历,每遍历一次就更新一次该数字出现的次数,判断是否超过了数组长度的一半,超过了就直接return
,没有的话就直接遍历,如果遍历结束之后还是没有出现对应的数字的话,就返回0;
function MoreThanHalfNum_Solution(numbers)
{
let temp = {};
const _length = numbers.length;
for(let item of numbers){
if(Object.keys(temp).includes(String(item))){
temp[item] += 1;
}else{
temp[item] = 1;
}
if(temp[item]>Math.floor(_length/2)){
return item;
}
}
return 0;
}
以上是关于剑指offer[28]——数组中出现次数超过一半的数字的主要内容,如果未能解决你的问题,请参考以下文章