Dans un tableau d'entiers, si la fréquence d'apparition d'un entier est égale à sa valeur, nous appelons cet entier le "chiffre porte-bonheur".
Donnez-vous un tableau de nombres entiers arr, veuillez en trouver et en retourner un numéro porte-bonheur.
S'il y a plusieurs numéros porte-bonheur dans le tableau, renvoyez simplement le plus grand.
S'il n'y a pas de numéros porte-bonheur dans le tableau, -1 est renvoyé.
Exemple 1:
Entrée: arr = [2,2,3,4]
Sortie: 2
Explication: Le seul chiffre porte-bonheur dans le tableau est 2 car la fréquence de la valeur 2 est également 2.
Exemple 2:
Entrée: arr = [1,2,2,3,3,3]
Sortie: 3
Explication: 1, 2 et 3 sont tous des nombres porte-bonheur, il suffit de renvoyer les 3 plus grands d'entre eux.
Exemple 3:
Entrée: arr = [2,2,2,3,3]
Sortie: -1
Explication: Il n'y a pas de numéro porte-bonheur dans le tableau.
Exemple 4:
Entrée: arr = [5]
Sortie: -1
Exemple 5:
Entrée: arr = [7,7,7,7,7,7,7]
Sortie: 7
Astuces:
1 <= longueur arr. <= 500
1 <= arr [i] <= 500
Source: Bouton séjour (LeetCode)
lien: https: //leetcode-cn.com/problems/find-lucky-integer-in-an-array
copyright par prélèvement sur tous les réseaux. Veuillez contacter l'autorisation officielle pour la réimpression commerciale et veuillez indiquer la source de la réimpression non commerciale.
Idées:
Utilisez Counter directement pour compter la fréquence d'occurrence de chaque numéro, puis trouvez le plus grand nombre porte-bonheur.
Complexité temporelle: O (N)
Complexité spatiale: 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