您的位置:首页 > Web前端 > JavaScript

JavaScript--《剑指offer》-题二十七

2017-11-07 20:46 357 查看
题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。

我的代码

function MoreThanHalfNum_Solution(numbers)
{
var sorarr=numbers.sort();
var halfarr=[];
var num=0;
var half= Math.ceil(numbers.length/2);
for(var i=0;i<half;i++){
halfarr.push(sorarr[i]);
}
function halfNum(array){

if(array[0]===array[half-1]){
return array[0];
}
array=array.slice(1);
array.push(sorarr[half+num]);
num++;
if(num===numbers.length-half){
return 0;
}
return halfNum(array);

}
return halfNum(halfarr);
}
//14ms  5296k


分析:先把原始数组排序。然后把原始的数组划分出大于一半的数组,既这个数组的长度为原数组的一半,然后比较这个数组的第一项和最后一项是否相等,要是相等则这个数组里的数已经满足题目要求,要是不满足,则这个数组的数往后面移一项,一直到最后,还是不满足就返回0,表示这个数组里面没有满足要求的数字。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: