概述
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()函数
最后
以上就是壮观高山为你收集整理的牛客网-剑指offer[编程题]数组中出现次数超过一半的数字 js详解的全部内容,希望文章能够帮你解决牛客网-剑指offer[编程题]数组中出现次数超过一半的数字 js详解所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复