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.代码实现
思路:
- 获得数组内数值对应出现的个数
- 获得满足要求的个数
- 输出(记得类型转换)
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();