LeetCode-Python-1394. Trouvez le numéro porte-bonheur dans le tableau (table de hachage)

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

 

Publié 734 articles originaux · 121 éloges · 210 000 vues

Je suppose que tu aimes

Origine blog.csdn.net/qq_32424059/article/details/105191553
conseillé
Classement