28.数组中出现次数超过一半的数字
题目描述
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。
例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。
解题思路
这里用了一个对象来保存每个数字出现的次数,一旦一个数字出现的次数超过了数组长度的一半,就return出来。
Code
function MoreThanHalfNum_Solution(numbers)
{
// write code here
var len = numbers.length;
if(len == 0) return 0;
if(len == 1) return numbers[0];
var target = len / 2;
let count = {};
for(let i = 0; i < len; i++){
if(count[numbers[i]]){
count[numbers[i]]++;
if(count[numbers[i]] > target) return numbers[i];
}else{
count[numbers[i]] = 1;
}
}
return 0;
}