JS实现:数组中出现次数超过一半的数字

数组中出现次数超过一半的数字

http://www.nowcoder.com/questionTerminal/e8a1b01a2df14cb2b228b30ee6a92163

想要知道数组中出现次数超过数组一半的数字,首先需要知道数据中每个数字出现的次数,例子中使用了对象的特性【对象中不允许出现重复的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
}


全部评论

相关推荐

11-09 01:22
已编辑
东南大学 Java
高级特工穿山甲:羡慕,我秋招有家企业在茶馆组织线下面试,约我过去“喝茶详谈”😢结果我去了发现原来是人家喝茶我看着
点赞 评论 收藏
分享
我见java多妩媚:大外包
点赞 评论 收藏
分享
3 1 评论
分享
牛客网
牛客企业服务