刷题系列 - 找出整型数组中占比超过一半的数

36 阅读1分钟

1.问题描述

小R从班级中抽取了一些同学,每位同学都会给出一个数字。已知在这些数字中,某个数字的出现次数超过了数字总数的一半。现在需要你帮助小R找到这个数字。


2.测试样例

样例1:

输入:array = [1, 3, 8, 2, 3, 1, 3, 3, 3]
输出:3

样例2:

输入:array = [5, 5, 5, 1, 2, 5, 5]
输出:5

样例3:

输入:array = [9, 9, 9, 9, 8, 9, 8, 8]
输出:9


3.代码实现

思路:

  1. 获得数组内数值对应出现的个数
  2. 获得满足要求的个数
  3. 输出(记得类型转换)
function solution(array) {
    const obj = {}
    array.forEach(item => {
        if (obj[item]) {
            obj[item] += 1
        } else {
            obj[item] = 1
        }
    })
    const result = Object.keys(obj).filter(item=> obj[item] > (array.length /2))
    return Number(result[0]);
}

function main() {
    console.log(solution([1, 3, 8, 2, 3, 1, 3, 3, 3]) === 3);
}

main();