JavaScript--《剑指offer》-题二十七
2017-11-07 20:46
357 查看
题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。
我的代码:
分析:先把原始数组排序。然后把原始的数组划分出大于一半的数组,既这个数组的长度为原数组的一半,然后比较这个数组的第一项和最后一项是否相等,要是相等则这个数组里的数已经满足题目要求,要是不满足,则这个数组的数往后面移一项,一直到最后,还是不满足就返回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,表示这个数组里面没有满足要求的数字。
相关文章推荐
- JavaScript--《剑指offer》-题二十七
- 《剑指offer》编程题java实现(二十七):二叉搜索树的后序遍历序列
- JavaScript学习笔记(二十七) 常量
- 轻松学习JavaScript二十七:DOM编程学习之事件模型
- 轻松学习JavaScript二十七:DOM编程学习之事件模型
- JavaScript学习笔记二十七:Promise
- javaScript笔记(二十七) XPath
- JavaScript(二十七)
- JavaScript--《剑指offer》-题二
- javascript 剑指offer
- javascript基础(Dom查询练习)(二十七)
- AcrGIS For JavaScript Feature layer with no basemap(没有底图)————(二十七)
- 【Javascript】javascript学习 二十七 JavaScript Math(算数)对象
- javascript 数组 二十七
- 剑指offer(javascript实现)
- JavaScript Boolean(逻辑)对象(二十七)
- 剑指offer题目练习及思路分析-JavaScript版(一)
- 如何使用javascript调用webservice
- HTML5基础加强css样式篇(css属性transform 函数(3D)3D盒子)(二十七)
- 剑指Offer(第二版)面试题10:斐波那契数列