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