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 de mettre en œuvre 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 à des 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.
Table de code Leet commençant à zéro
Dernière fois Leet Code Day20 "134. Gas Station" à partir de zéro
En gros, je voudrais résoudre l'acceptation facile par ordre décroissant.
Twitter Je le fais.
448. Find All Numbers Disappeared in an Array
Le niveau de difficulté est facile. L'une des 100 questions les plus appréciées. Le nombre de problèmes faciles dans les 100 questions les plus appréciées a considérablement diminué.
Étant donné un tableau d'entiers où 1 ≤ a [i] ≤ n
(n est la taille du tableau), certains éléments apparaîtront deux fois et d'autres une fois.
Trouvez tous les éléments qui ne sont pas visibles dans ce tableau donné.
Input: [4,3,2,7,8,2,3,1]
Output: [5,6]
Puisque les valeurs inexistantes entre 1 et 8 sont 5 et 6, ces deux sont renvoyées.
La première chose que nous avons implémentée cette fois est de trier le tableau, de comparer le tableau trié avec le tableau d'origine et de l'ajouter au tableau qui renvoie une valeur inexistante.
class Solution:
def findDisappearedNumbers(self, nums: List[int]) -> List[int]:
num,ans = set(sorted(nums)),[]
for i in range(1,len(nums)+1):
if i not in num:
ans.append(i)
return ans
# Runtime: 464 ms, faster than 11.82% of Python3 online submissions for Find All Numbers Disappeared in an Array.
# Memory Usage: 23.7 MB, less than 7.14% of Python3 online submissions for Find All Numbers Disappeared in an Array.
Cependant, ce n'est pas très rapide et cela n'économise pas beaucoup de mémoire. Alors cette fois, j'ai essayé de l'implémenter ailleurs.
class Solution:
def findDisappearedNumbers(self, nums: List[int]) -> List[int]:
for num in nums:
ans = abs(num) - 1
if nums[ans] > 0:
nums[ans] *= -1
return [i+1 for i in range(len(nums)) if nums[i] > 0]
# Runtime: 380 ms, faster than 63.11% of Python3 online submissions for Find All Numbers Disappeared in an Array.
# Memory Usage: 21.5 MB, less than 17.86% of Python3 online submissions for Find All Numbers Disappeared in an Array.
Il s'est un peu amélioré.
Ce dernier obtient ʻabs pour obtenir la valeur absolue, et si
nums [ans] ʻest supérieur à zéro, remplacenums [ans]
pour la valeur manquant -1 dans nums [ans]
. ..
Enfin, je l'ai écrit en obtenant la longueur de nums dans la notation d'inclusion, en faisant i + 1 si nums [i]> 0
, et enfin en retournant.
Il est intéressant de penser que la quantité de calcul, etc. changera considérablement avec une seule méthode d'écriture car il s'agit d'un processus simple.
S'il y a une bonne réponse, je l'ajouterai.
Recommended Posts