时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M 热度指数:661278
本题知识点: 哈希 数组
题目描述
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。
示例1
输入
[1,2,3,2,2,2,5,4,2]
返回值
2
思路:遍历用map存储每个元素,相同元素进行累加,然后判断获取的val是否大于length,大于返回key,否则返回0
function MoreThanHalfNum_Solution(numbers) {
// write code here
let len = numbers.length
let map = new Map()
for (let i = 0; i < len; i++) {
let tmp = map.get(numbers[i])
if (tmp === undefined) {
map.set(numbers[i], 1)
} else {
map.set(numbers[i], ++tmp)
}
if (map.get(numbers[i]) > len / 2) return numbers[i]
}
return 0
}