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.
En gros, je voudrais résoudre l'acceptation facile par ordre décroissant.
1389. Create Target Array in the Given Order
Le problème est -Le tableau renvoyé est initialement vide. -Selon nums [i] et index [i], insérer nums à la place de l'index. -Répéter jusqu'à ce qu'il n'y ait plus d'éléments nums et index. Enfin, il renvoie un tableau et se termine.
Si vous ne pouvez pas l'imaginer, veuillez le lire.
class Solution:
def createTargetArray(self, nums: List[int], index: List[int]) -> List[int]:
target = []
for i in range(len(nums)):
target.insert(index[i],nums[i])
return target
# Runtime: 36 ms, faster than 36.25% of Python3 online submissions for Create Target Array in the Given Order.
# Memory Usage: 13.9 MB, less than 100.00% of Python3 online submissions for Create Target Array in the Given Order.
C'est ce que j'ai imaginé. Puisqu'il a été écrit dans Contraintes que le nombre d'éléments de nums et d'index est le même, vous devriez le tourner une fois avec une instruction for et mettre le nombre d'éléments dans la fonction d'insertion respectivement. Cependant, ce n'est pas rapide et je pense que c'est trop banal.
Une autre idée était d'écrire dans une déclaration de temps, D'après Ce que j'ai fait quand je voulais rendre Python plus rapide, l'instruction while semble être plus lente en Python.
De plus, je l'ai écrit au cas où et je l'ai exécuté.
class Solution:
def createTargetArray(self, nums: List[int], index: List[int]) -> List[int]:
target = [0]*len(index)
j = 0
while j < len(index):
target.insert(index[j], nums[j])
j += 1
return target[:len(nums)]
# Runtime: 36 ms, faster than 36.25% of Python3 online submissions for Create Target Array in the Given Order.
# Memory Usage: 13.8 MB, less than 100.00% of Python3 online submissions for Create Target Array in the Given Order.
...cette? Même chose. Au contraire, il utilise un peu moins de mémoire.
Eh bien, pour le moment, cela n'allait pas s'accélérer de manière significative.
Ceux auxquels je ne pouvais pas penser étaient ceux qui utilisaient la fonction zip et ceux qui utilisaient des tranches.
La fonction zip est telle que décrite dans la Documentation officielle.
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.
Alors,
hoge = [1,2,3,4,5]
foo = [6,7,8,9,10]
bar = zip(hoge,foo)
list(bar)
[(1,6),(2,7),(3,8),(4,9),(5,10)]
Cela fonctionne comme ci-dessus.
De plus, comme celui qui l'utilise, ici.
class Solution:
def createTargetArray(self, nums: List[int], index: List[int]) -> List[int]:
res = []
for i, v in zip(index, nums):
res.insert(i, v)
return res
# Runtime: 28 ms, faster than 90.08% of Python3 online submissions for Create Target Array in the Given Order.
# Memory Usage: 13.8 MB, less than 100.00% of Python3 online submissions for Create Target Array in the Given Order.
vite! Après cela, si vous rencontrez des problèmes similaires, il est préférable d'utiliser la fonction zip.
Merci pour votre travail acharné et j'espère que vous pourrez le résoudre et écrire un article.
~~ Profitons de mon temps libre pour écrire un article sur la vitesse des instructions for et while de Python ... ~~
Recommended Posts