想要知道数组中出现次数超过数组一半的数字,首先需要知道数据中每个数字出现的次数,例子中使用了对象的特性【对象中不允许出现重复的key】所以可以将数组中的数字当成对象的key,出现的次数当成key的value。然后在去判断对象中的哪个key的value大于数组的一半,返回这个key就可以了。代码如下:
function MoreThanHalfNum_Solution(numbers)
{
let obj = {},
result = 0;
numbers.forEach(el=>{
if(el in obj){
obj[el] += 1;
}else{
obj[el] = 1;
}
})
for(let i in obj){
if(obj[i] > numbers.length/2){
result = i;
}
}
return result;
// write code here
} 上面的代码在编辑器中会报错:“Type 'string' is not assignable to type 'number'.”,虽然不影响功能,但是看着难受啊,改成下面这样就可以了 function MoreThanHalfNum_Solution(numbers)
{
let obj = {},
result;
numbers.forEach(el=>{
if(el in obj){
obj[el] += 1;
}else{
obj[el] = 1;
}
})
for(let i in obj){
if(obj[i] > numbers.length/2){
result = i;
}
}
return result || 0;
// write code here
} 
京公网安备 11010502036488号