數(shù)組中出現(xiàn)次數(shù)超過一半的數(shù)字
題目描述
數(shù)組中有一個數(shù)字出現(xiàn)的次數(shù)超過數(shù)組長度的一半誉碴,請找出這個數(shù)字粟按。例如輸入一個長度為9的數(shù)組{1,2,3,2,2,2,5,4,2}中捆。由于數(shù)字2在數(shù)組中出現(xiàn)了5次,超過數(shù)組長度的一半雾消,因此輸出2。如果不存在則輸出0挫望。
思路
- 新建一個空對象obj保存數(shù)組中數(shù)字出現(xiàn)的次數(shù)立润;
- 遍歷數(shù)組,如果該數(shù)字出現(xiàn)過媳板,則obj中以該數(shù)字為key的value加1桑腮;
- 若該數(shù)字未出現(xiàn)過,則obj中以該數(shù)字為key的value設(shè)為1蛉幸;
- 遍歷obj對象破讨,返回value大于數(shù)組長度一半的key,即為所求數(shù)字奕纫。
實現(xiàn)代碼
function MoreThanHalfNum_Solution(numbers)
{
var obj = {};
var length = numbers.length;
numbers.forEach(function(d) {
if (obj[d]) {
obj[d]++;
} else {
obj[d] = 1;
}
})
for (var i in obj) {
if (obj[i] > Math.floor(length / 2)) {
return i;
}
}
return 0;
}