前端算法题:找出数组中第k大的数字出现多少次。
题目:给定一个一维数组,如[1,2,4,4,3,5],找出数组中第k大的数字出现多少次。
例如:第2大的数是4,出现2次,最后输出 4,2
function getNum(arr, k){
// 数组排序->从大到小
arr.sort((a, b)=> (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)); 题目:给定一个一维数组,如[1,2,4,4,3,5],找出数组中第k大的数字出现多少次。 例如:第2大的数是4,出现2次,最后输出 4,2 function getNum(arr, k){ // 数组排序->从大到小 arr.sort((a, b)=> (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));
