概述
数组中超过一半的数字
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。
思路
第一种是新建一个空对象来保存数组中数字出现的次数;遍历该,如果该数字出现过,则obj中以该数字为key的value加1;若该数字未出现过,则obj中以该数字为key的value设为1;遍历obj对象,返回value大于数组长度一半的key,即为所求数字。
第二种是对该数组进行排序,用sort,然后求中位数。但是在提交的时候,如果有9个数字,但是只出现了4次,那也会返回,所以这个方法并不能通过所有测试用例。
代码
function MoreThanHalfNum_Solution(numbers)
{
// write code here
var obj = {};
var len = numbers.length;
numbers.forEach(function(s){
if(obj[s]){
obj[s]++;
}else{
obj[s]=1;
}
})
for(var i in obj){
if(obj[i] > Math.floor(len / 2)){
return i;
}
}
return 0;
}
//第二种(不能通过所有测试用例)
function MoreThanHalfNum_Solution(numbers)
{
// write code here
var arr = numbers.sort();
if(arr.length % 2 == 0){
return arr[arr.length/2];
}else{
return arr[(arr.length + 1) / 2];
}
}
最后
以上就是满意毛豆为你收集整理的数组中超过一半的数字——js数组中超过一半的数字的全部内容,希望文章能够帮你解决数组中超过一半的数字——js数组中超过一半的数字所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复