题解 | #数组中出现次数超过一半的数字#

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

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

{
    // write code here
    //reduce() 方法接收一个函数作为累加器
    let result = numbers.reduce((temp,data) => {
        temp[data] = temp[data] ? temp[data] + 1 : 1;
        return temp;
    },{})
    let num;
    for(let index in result){
        if(result[index] > numbers.length/2){
            num = index;
        }
    }
    return num;
}
module.exports = {
    MoreThanHalfNum_Solution : MoreThanHalfNum_Solution
};

alt

//排序解法
function MoreThanHalfNum_Solution(numbers)
{
   numbers = numbers.sort((a,b) => a-b);
   let middle = numbers[Math.floor(numbers.length / 2)];
   let count = 0;
   numbers.forEach(value => {
       if(value === middle){
           count++;
       }
   })
    return (count > numbers.length / 2) ? middle : 0;
}

module.exports = {
    MoreThanHalfNum_Solution : MoreThanHalfNum_Solution
};

alt

// 对象解法
function MoreThanHalfNum_Solution(numbers)
{
    let len = Math.floor(numbers.length / 2);
    let obj = {};
    for(let i = 0; i < numbers.length; i++){
        if(obj[numbers[i]]){
            obj[numbers[i]]++;
        }else{
            obj[numbers[i]] = 1;
        }
    }
    for(let k in obj){
        if(obj[k] > len){
            return k;
        }
    }
    return 0;
}
module.exports = {
    MoreThanHalfNum_Solution : MoreThanHalfNum_Solution
};

alt

全部评论

相关推荐

这是什么操作什么意思,这公司我服了...
斯派克spark:意思是有比你更便宜的牛马了
点赞 评论 收藏
分享
06-15 02:05
已编辑
南昌航空大学 数据分析师
Eason三木:你如果想干技术岗,那几个发公众号合唱比赛的经历就去掉,优秀团员去掉,求职没用。然后CET4这种不是奖项,是技能,放到下面的专业技能里或者单独列一个英语能力。 另外好好改改你的排版,首行缩进完全没有必要,行间距好好调调,别让字和标题背景黏在一起,你下面说能做高质量PPT你得展现出来啊,你这简历排版我用PPT做的都能比你做的好。 然后自我评价,你如果要干数据工程师,抗压能力强最起码得有吧。
简历中的项目经历要怎么写
点赞 评论 收藏
分享
程序员小白条:找的太晚,别人都是大三实习,然后大四秋招春招的,你大四下了才去实习,晚1年
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务