剑指offer

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

2020-05-19  本文已影响0人  马甲要掉了

题目描述

数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。

分析

用object的key,value分别来保存数字和次数。

代码

function MoreThanHalfNum_Solution(numbers)
{
    // write code here
    let len  = numbers.length;
    let obj = {};
    let res = 0;
    for(let i=0;i<len;i++){
        if(!obj[numbers[i]]){
            obj[numbers[i]] = 1;
        }else{
            obj[numbers[i]]++;
        }
    }
    for(let i in obj){
        if(obj[i]>len/2){
            return i;
        }
        
    }
    return 0;
}
上一篇下一篇

猜你喜欢

热点阅读