题目:给你一个数组,输出数组中出现次数第n多的数字;
比如:[1,1,1,2,2,2,3,3,4,4,5,5,6,6,7];
1---3次
2---3次
3---2次
4---2次
5---2次
6---2次
7---1次
假设要求输出第1多的:1,2
第3多:7
有兴趣的,可以做一做,我给出我的解法:
function findNPlace(arr,n){
var o={};
for(var i=0,len=arr.length;i<len;i++){
if(!o[arr[i]]) o[arr[i]]=1;
else o[arr[i]]++;
}
var orderByTime=[];
for(var key in o){
orderByTime.push([key,o[key]]);
}
orderByTime.sort(function(a,b){return b[1]-a[1]});
var k=0,oLen=orderByTime.length,nth=1;
while(k<oLen-1){
if(nth==n) console.log("result:"+orderByTime[k]);
if(orderByTime[k][1]!=orderByTime[k+1][1]) nth++;
k++;
}
}
可以,现场太紧张,没做出来;代码有错误的告诉我呀~