[PYTHON] Soit Code Day3 à partir de zéro "1313. Decompress Run-Length Encoded List"

Aperçu

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.

Leetcode

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

problème

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

Soit Code Day3 à partir de zéro "1313. Decompress Run-Length Encoded List"
Soit Code Jour 22 à partir de zéro "141. Cycle de liste liée"
Let Code Day 30 à partir de zéro "234. Palindrome Linked List"
Soit Code Day75 à partir de zéro "15.3 Sum"
Let Code Day 29 "46. Permutations" à partir de zéro
Let Code Day 27 "101. Symmetric Tree" à partir de zéro
Let Code Day 41 "394. Decode String" à partir de zéro
Laissez Code Day69 à partir de zéro "279. Perfect Squares"
Let Code Day 34 à partir de zéro "118. Le triangle de Pascal"
Laissez Code Day85 à partir de zéro "6. Conversion en zigzag"
Laissez Code Day20 partir de zéro "134. Station-service"
Let Code Day 88 "139. Word Break" à partir de zéro
Let Code Day 28 "198. House Robber" à partir de zéro
Let Code Day 39 "494. Target Sum" à partir de zéro
Let Code Day 36 "155. Min Stack" à partir de zéro
Let Code Day 17 "169. Majority Element" à partir de zéro
Let Code Day 33 "1. Two Sum" à partir de zéro
Let Code Day8 À partir de zéro "1302. Somme des feuilles les plus profondes"
Let Code Day 32 "437. Path Sum III" à partir de zéro
Soit Code Day68 à partir de zéro "709. To Lower Case"
Soit Code Day78 à partir de zéro "206. Liste liée inversée"
Let Code Day 26 à partir de zéro "94. Traversée en ordre de l'arbre binaire"
Soit Code Day 46 à partir de zéro "406. Reconstruction de file d'attente par hauteur"
Soit Code Jour 84 à partir de zéro "142. Cycle de liste liée II"
Let Code Day 38 à partir de zéro "208. Implémenter Trie (Prefix Tree)"
Soit Code Day 65 "560. Subarray Sum Equals K" à partir de zéro
Soit Code Day4 à partir de zéro "938. Range Sum of BST"
Let Code Day 77 "1502. Peut faire une progression arithmétique à partir de la séquence" à partir de zéro
Soit Code Jour 76 à partir de zéro "3. Sous-chaîne la plus longue sans caractères répétitifs"
Soit Code Day58 à partir de zéro "20. Parenthèses valides"
Let Code Day 62 "83. Supprimer les doublons de la liste triée"
Soit Code Day16 à partir de zéro "344. Reverse String"
Soit Code Day49 à partir de zéro "1323. Maximum 69 Number"
Let Code Day89 "62. Chemins uniques" à partir de zéro
Let Code Day 55 "22. Générer des parenthèses" à partir de zéro
Soit Code Day18 à partir de zéro "53. Maximum Subarray"
Let Code Day 13 "338. Comptage des bits" à partir de zéro
Let Code Day71 À partir de zéro "1496. Traversée de chemin"
Let Code Day 61 "7. Integer Integer" à partir de zéro
Let Code Day 82 "392. Is Subsequence" Partant de zéro
Let Code Day51 "647. Sous-chaînes palindromiques" à partir de zéro
Let Code Day 50 "739. Températures quotidiennes" à partir de zéro
Let Code Day 15 "283. Move Zeroes" à partir de zéro
Soit Code Day14 à partir de zéro "136. Numéro unique"
Soit Code Day 40 à partir de zéro "114. Aplatir l'arbre binaire à la liste liée"
Let Code Day 9 "701. Insérer dans un arbre de recherche binaire" à partir de zéro
Let Code Day 80 "703. Kth plus grand élément d'un flux" à partir de zéro
Let Code Day 66 "438. Find All Anagrams in a String" en partant de zéro
Let Code Day 43 à partir de zéro "5. Le plus long substrat palindromique"
Let Code Day 42 "2. Add Two Numbers" en partant de zéro
Soit Code Day47 à partir de zéro "14. Préfixe commun le plus long"
Let Code Day 90 à partir de zéro "101 1. Capacité à expédier les colis dans les D jours"
Soit Code Day 44 "543. Diamètre de l'arbre binaire" à partir de zéro
Soit Code Jour 64 à partir de zéro "287. Trouver le numéro en double"
Let Code Day24 À partir de zéro "21. Fusionner deux listes triées"
Laissez Code Day12 partir de zéro "617. Fusionner deux arbres binaires"
Soit Code Day2 à partir de zéro "1108. Defanging an IP Address"
Let Code Day70 À partir de zéro "295. Trouver la médiane à partir du flux de données"
Let Code Day81 "347. Top K éléments fréquents" à partir de zéro
Let Code Day48 Starting from Zero "26. Supprimer les doublons du tableau trié"
Soit Code Day87 à partir de zéro "1512. Nombre de bonnes paires"