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 Day2 1108. Defanging an IP Address commençant à zéro
1313. Decompress Run-Length Encoded List
We are given a list nums of integers representing a list compressed with run-length encoding. Consider each adjacent pair of elements [freq, val] = [nums[2i], nums[2i+1]](with i >= 0). For each such pair, there are freq elements with value val concatenated in a sublist. Concatenate all the sublists from left to right to generate the decompressed list. Return the decompressed list.
Léchez la liste donnée dans l'ordre de face et faites une paire avec deux. Le premier est traité comme «freq» en tant que nombre d'éléments, et le second est traité comme «valeur» en tant que valeur. Par exemple, si «freq = 1», «valeur = 2», il devient [2].
Dans le cas de nums = [1,2,3,4]
donné à titre d'exemple, la première paire est freq = 1
, value = 2
,
La deuxième paire est freq = 3
, value = 4
, donc [2] + [4,4,4], et les ajouter à la liste dit [2,4,4,4] Devenir.
Le problème est de créer une fonction qui les renvoie.
class Solution:
def decompressRLElist(self, nums: List[int]) -> List[int]:
ans = []
for i in range(0,len(nums),2):
ans += [nums[i+1]]*nums[i]
return ans
# Runtime: 60 ms, faster than 95.75% of Python3 online submissions for Decompress Run-Length Encoded List.
# Memory Usage: 13.9 MB, less than 100.00% of Python3 online submissions for Decompress Run-Length Encoded List.
Si vous lisez le problème, vous pouvez voir qu'il est important de prendre le nombre d'éléments en le tournant avec une instruction for pour le moment.
La clé de ce problème est i et i + 1, comment implémenter la technique consistant à obtenir des éléments par incréments de deux et à les multiplier par le nombre devant eux.
Heureusement, Python n'a besoin d'appliquer que des valeurs numériques aux arguments de la fonction range dans l'ordre de (start, stop, step).
start est le nombre de démarrages. Je suis parti de 0 dans cet exemple.
Avec combien d'arrêts finissez-vous? Ici, le nombre d'éléments ne dépasse pas le nombre de nums, donc le nombre d'éléments de nums, c'est-à-dire len (nums)
peut être utilisé.
step est une valeur numérique indiquant le nombre d'éléments ignorés lors de la lecture du nombre d'éléments.
Par exemple, dans ce cas de test, l'argument «[1,2,3,4]» est donné, donc 1 et 3 sont affectés à i dans cette fonction de plage.
Cela a peut-être été une réponse très banale, mais vous pouvez obtenir le nombre que vous recherchez en sautant 0 à freq
par 2 dans l'instruction for et en le multipliant par le nombre qui suit lorsque vous l'ajoutez. être capable de.
De plus, exactement de la même manière, cette manière de penser semble supérieure dans la discussion.
class Solution:
def decompressRLElist(self, nums: List[int]) -> List[int]:
ans = []
for i in range(1,len(nums),2):
ans += [nums[i]]*nums[i-1]
return ans
# Runtime: 60 ms, faster than 95.75% of Python3 online submissions for Decompress Run-Length Encoded List.
# Memory Usage: 14 MB, less than 100.00% of Python3 online submissions for Decompress Run-Length Encoded List.
Honnêtement, je pense que cela n'a pas d'importance car la vitesse et la consommation de mémoire ne changent pas.
De plus, il y a des gens féroces dans le monde qui répondent en une seule ligne. Par exemple, un tel exemple.
def decompressRLElist(self, A):
return [x for a, b in zip(A[0::2], A[1::2]) for x in [b] * a]
# Runtime: 88 ms, faster than 5.86% of Python3 online submissions for Decompress Run-Length Encoded List.
# Memory Usage: 14.1 MB, less than 100.00% of Python3 online submissions for Decompress Run-Length Encoded List.
Dans l'instruction for, 0 à 2 sauts et 1 à 2 sauts sont placés respectivement dans «a» et «b», et finalement leur produit est attribué à x.
La fonction zip est utilisée dans cette réponse, mais la fonction zip est la suivante. fonction zip
Créez un itérateur qui collecte les éléments de chaque itérable. Cette fonction renvoie un itérateur d'un taple, le i-ième tapple contenant le i-ième élément de chaque séquence d'arguments ou itérable. Cet itérateur s'arrête lorsque le plus court des itérables d'entrée est épuisé. Étant donné un seul argument itérable, renvoie un itérateur constitué d'un taple à un élément. Sans argument, il renvoie un itérateur vide.
Ce problème n'est-il pas un très bon problème parce que l'énoncé du problème est ambigu? L'histoire est également soulevée dans la discussion. En fait, il semble que l'évaluation du mauvais soit beaucoup plus élevée que celle du bien, donc cela peut ne pas être très utile.
Recommended Posts