配列中のラッキー数を見つける【JavaScript】

4906 ワード

配列内の幸運の数を見つける


整数配列では,1つの整数の出現頻度がその数値サイズと等しい場合,この整数を「幸運数」と呼ぶ.整数配列arrをあげます.そこから幸運の数を見つけて返してください.
配列に複数のラッキー数がある場合は、最大のラッキー数を返すだけです.配列に幸運数が含まれていない場合は、-1を返します.例1:
入力:arr=[2,2,3,4]出力:2解釈:配列中の唯一の幸運数は2であり、数値2の出現頻度も2であるためである.例2:
入力:arr=[1,2,2,3,3]出力:3解釈:1,2および3はいずれも幸運数であり,そのうち最大の3を返すだけである.例3:
入力:arr=[2,2,2,3,3]出力:-1解釈:配列に幸運数は存在しません.例4:
入力:arr=[5]出力:-1例5:
入力:arr=[7,7,7,7,7,7,7,7,7]出力:7
ヒント:
1 <= arr.length <= 500 1 <= arr[i] <= 500
ソース:力ボタン(LeetCode)リンク:https://leetcode-cn.com/problems/find-lucky-integer-in-an-array
もともと决まった时间はよくて、10.30起きて周の试合をして、结局寝坊して、目が覚めると、すでに11.30余りで、おかずの鶏の私は第1题を见て、(时间通りに私も第1题しかできないと思います、ははは).この問題の構想は私が考えているのはやはり比較的に簡単で、最大のものを探し出す以上、まずsortで並べ替えて、それから最初のものを探し出しても同じで、ないなら-1に戻ります.コードは次のとおりです.
/**
 * @param {number[]} arr
 * @return {number}
 */
var findLucky = function(arr) {
    let lucky = [], currentValue
    arr = arr.sort((a, b) => b - a)
    for (let i = 0; i < arr.length; i++) {
        currentValue = arr[i]//          
        let index = 0
        for (let j = 0; j < arr.length; j++) {
            if (arr[j] === currentValue) {//               
                index++
            }
        }
        if (currentValue === index) {
            lucky.push(currentValue)//         
            index = 0
        }
    }
    return lucky.length ? lucky[lucky.length - 1] : -1//          
};