前端算法題:找出數組中第k大的數字出現多少次

題目:給定一個一維數組,如[1,2,4,4,3,5],找出數組中第k大的數字出現多少次。

例如:第2大的數是4,出現2次,最後輸出 4,2segmentfault

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));

來源:http://www.javashuo.com/article/p-fvoymvql-bo.html數組

相關文章
相關標籤/搜索