Il semble que des tests de codage soient menés à l'étranger lors d'entretiens d'ingénieurs, et dans de nombreux cas, l'essentiel est d'implémenter des fonctions et des classes spécifiques en fonction du thème.
En guise de contre-mesure, il semble qu'un site appelé Let Code prendra des mesures.
Un site qui forme une puissance algorithmique capable de résister aux tests de codage dont on parle très tôt.
Je pense qu'il vaut mieux avoir la puissance de l'algorithme d'un être humain, donc je vais résoudre le problème de manière irrégulière et écrire la méthode que j'ai pensé à ce moment-là sous forme de mémo.
En gros, je voudrais résoudre l'acceptation facile par ordre décroissant.
Dernière fois Leet Code Day 9 "701. Insérer dans une arborescence de recherche binaire" à partir de zéro
Cela a duré 10 jours, c'est incroyable.
1431. Kids With the Greatest Number of Candies
Étant donné le tableau «candies» et le nombre «extraCandies». «bonbons [i]» est le nombre de bonbons que possède le i-ème enfant. Découvrez s'il existe un moyen de distribuer des bonbons supplémentaires à chaque enfant afin qu'ils puissent avoir le plus grand nombre de bonbons parmi eux.
C'est un peu difficile à comprendre si c'est juste un problème ... Il semble préférable de regarder un exemple réel.
Input: candies = [2,3,5,1,3], extraCandies = 3
Output: [true,true,true,false,true]
Dans le cas du tout premier enfant, si vous donnez 3 de «bonbons supplémentaires» à 2 des bonbons originaux, ce sera 5 par 2 + 3, et il s'alignera avec 5 qui est la valeur maximale en «bonbons». , Vrai. Il en va de même pour les deuxième, troisième et cinquième enfants.
Le seul "False" est le 4ème enfant, avec 3 "bonbons supplémentaires", qui n'est que de 4 et n'atteint pas la valeur maximale de 5 dans le tableau.
Après avoir ajouté la valeur de «Extra Candies» au nombre de chaque tableau, comparez-la à la valeur maximale du tableau, et si elle est supérieure ou égale à la valeur maximale, remplacez «True», et si elle est inférieure à la valeur maximale, remplacez «False» par «candies». , Si c'est une fonction qui renvoie des bonbons après avoir traversé le flux, il semble que la condition soit satisfaite.
Tout d'abord, un exemple d'écriture uniquement avec récursif et branchement
class Solution:
def kidsWithCandies(self, candies: List[int], extraCandies: int) -> List[bool]:
num = max(candies)
for i in range(len(candies)):
if candies[i] + extraCandies >= num:
candies[i] = True
else:
candies[i] = False
return candies
# Runtime: 64 ms, faster than 33.33% of Python3 online submissions for Kids With the Greatest Number of Candies.
# Memory Usage: 13.6 MB, less than 100.00% of Python3 online submissions for Kids With the Greatest Number of Candies.
C'est super simple. Cependant, ce n'est pas très rapide et je voudrais le simplifier davantage. Compte tenu de la partie qui peut être omise ici, je pense que la branche if après l'instruction for est un peu redondante.
class Solution:
def kidsWithCandies(self, candies: List[int], extraCandies: int) -> List[bool]:
num = max(candies)
return [candy + extraCandies >= num for candy in candies]
# Runtime: 48 ms, faster than 33.33% of Python3 online submissions for Kids With the Greatest Number of Candies.
# Memory Usage: 14 MB, less than 100.00% of Python3 online submissions for Kids With the Greatest Number of Candies.
Je vais le réécrire comme ça. C'est un peu plus rapide.
Ce qui suit le retour est la notation d'inclusion de liste,
[Expression de la variable dans l'objet]
Il est possible d'écrire.
En plus de la notation d'inclusion,
Définir {expression pour la variable dans l'objet}
Dictionnaire {expression clé: expression de valeur pour k, v dans l'objet}
Générateur (expression pour variable dans l'objet)
Si vous êtes intéressé, veuillez vous référer aux documents suivants.
En outre, il y avait ce qui suit comme un article intéressant sur la vitesse de la notation d'inclusion. Vous voudrez peut-être le vérifier lorsque vous en aurez le temps.
Speed of Python list inclusion notation
Recommended Posts