前端算法题:找出数组中第k大的数字出现多少次

时间:2022-10-18 09:04:13

题目:给定一个一维数组,如[1,2,4,4,3,5],找出数组中第k大的数字出现多少次。

例如:第2大的数是4,出现2次,最后输出 4,2


function getNum(arr, k){
// 数组排序->从大到小
arr.sort((a, b)=>{
return b-a;
});
let uniqarr = Array.from(new Set(arr)); // 数组去重
let tar = uniqarr[k-1]; // 找到目标元素
let index = arr.indexOf(tar); // 寻找索引
let num; // 利用元素之间的索引来得出该数字的数量 if(k == uniqarr.length){ // 需要判断是否为数组的最后一个元素(即最小值)
num = arr.length - index;
}else{
let indexnext = arr.indexOf(uniqarr[k]);
num = indexnext - index;
}
return ([tar, num]);
} let arr = [1,2,4,4,3,5];
console.log(...getNum(arr, 2));

来源:https://segmentfault.com/a/1190000017708381