1.暴力双循环法
function MoreThanHalfNum_Solution(numbers)
{
var mid = Math.floor(numbers.length/2);
for(var i = 0;i < numbers.length;i++){
var temp = numbers[i]
var count = 0;
for(var j = 0;j < numbers.length;j++){
if(numbers[j] == temp){
count++;
}
if(count >= mid+1){
return temp;
}
}
}
return 0;
}
2.在对象存储每个数出现次数
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;
}
注意事项
这道题虽然简单,但是我们要注意到js里的除法和java、c里的是不一样的
js里是真正的除法,带小数点的
而java里的是地板除,向下取整的
我们用js获得地板除的效果,必须使用Math.floor()函数