LeetCode-Python-1394。配列(ハッシュテーブル)でラッキーナンバーを調べます

整数の配列で、整数の出現頻度がその値と等しい場合、この整数を「ラッキーナンバー」と呼びます。

整数配列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)
//leetcode-cn.com/problems/find-lucky-integer-in-an-array:リンク:httpsの
すべてのネットワークからの控除が著作権を保有。商用転載の正式な許可書に連絡し、非商用転載の出典を明記してください。

アイデア:

Counterを直接使用して各番号の発生頻度をカウントし、最大のラッキーナンバーを見つけます。

時間の複雑さ:O(N)

スペースの複雑さ:O(N)

class Solution(object):
    def findLucky(self, arr):
        """
        :type arr: List[int]
        :rtype: int
        """
        l = [key for key, val in collections.Counter(arr).items() if key == val]
        return max(l) if l else -1

 

元の記事を734件公開 121件の賞賛 21万回表示

おすすめ

転載: blog.csdn.net/qq_32424059/article/details/105191553