剑指Offer-数组-数组中出现次数超过一半的数字

题目

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

思路

  • 通过Object对象来保存数字出现的次数
  • 如果出现次数大于数组长度的一半,返回该数字,否则返回0

代码

function MoreThanHalfNum_Solution(numbers) {
    let len = numbers.length/2; //数组的一半长度
    let obj = {};
    for (let i = 0; i < numbers.length; i++) {
        if (!obj[numbers[i]]) { //首次遍历到
            obj[numbers[i]] = 1;
        }
        else {
            obj[numbers[i]]++; //次数加1
        }
        if(obj[numbers[i]]>len){
            return numbers[i];
        }
    }
    return '0';
}
posted @ 2019-09-18 14:57  Kbin24  阅读(97)  评论(0编辑  收藏  举报