题目:给你一个数组,输出数组中出现次数第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++;
}
}

  可以,现场太紧张,没做出来;代码有错误的告诉我呀~

05-06 03:20