码迷,mamicode.com
首页 > 编程语言 > 详细

剑指offer[28]——数组中出现次数超过一半的数字

时间:2020-03-22 10:34:08      阅读:80      评论:0      收藏:0      [点我收藏+]

标签:ret   hal   比较   off   更新   block   超过   没有   offer   

题目描述

数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为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]——数组中出现次数超过一半的数字

标签:ret   hal   比较   off   更新   block   超过   没有   offer   

原文地址:https://www.cnblogs.com/Jacob98/p/12544250.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!