配列でラッキーナンバーを探す[JavaScript]

配列からラッキーナンバーを探す

整数配列では、整数の出現頻度がその値と等しい場合、その整数を「ラッキーナンバー」と呼びます。
あなたに整数配列arrを与えてください、それから幸運な数を見つけて返してください。

配列に複数のラッキーナンバーがある場合は、最大のものを返します。
配列にラッキーナンバーがない場合は、-1が返されます。
例1:

入力:arr = [2,2,3,4]
出力:2
説明:値2の出現頻度も2であるため、配列内の唯一の幸運な数は2です。
例2:

入力:arr = [1,2,2,3,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

促す:

1 <= arr.length <= 500
1 <= arr [i] <= 500

ソース:LeetCode
リンク:https ://leetcode-cn.com/problems/find-lucky-integer-in-an-array

予定時刻は良かったです。毎週の大会で10時半に起きましたが、寝坊しました。目が覚めたときは11時半以上でした。幼い頃、最初の質問を読みました(最初の質問しかできないと思います) 1つの質問、ハハ)。この質問の考え方は比較的単純だと思います。最大のものを見つけて、最初に並べ替えで並べ替えてから、最初の質問が同じである場合は、-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//返回数组第一个值即可
};

おすすめ

転載: blog.csdn.net/weixin_42345596/article/details/105198244