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.
Table de codes Leet commençant à zéro
Dernière fois Leet Code Day 32 "437. Path Sum III" à partir de zéro
En gros, je voudrais résoudre l'acceptation facile par ordre décroissant.
Twitter Je le fais.
Je n'ai pas écrit sur le problème que je résoudrais en premier lorsque je me suis enregistré avec LeetCode, je vais donc l'écrire maintenant.
Le niveau de difficulté est facile. Extrait des 100 questions les plus appréciées.
Le problème reçoit un tableau d'entiers et une variable «cible» qui contient une valeur spécifique. Choisissez deux entiers dans le tableau, trouvez une combinaison qui correspond à «cible» et implémentez une fonction qui renvoie l'index du tableau. Notez qu'il n'y a qu'une seule combinaison et que la même valeur ne peut pas être utilisée deux fois.
Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9, return [0, 1].
Par exemple, si vous l'écrivez en recherche complète, ce sera comme ça.
La recherche complète est ce qu'on appelle un examen minutieux et, dans la plupart des cas, elle entraîne des performances fatales au lieu d'essayer de rechercher tous les modèles.
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
for i in range(len(nums)):
for j in range(i+1,len(nums)):
ans = nums[i] + nums[j]
if target == ans:
return [i,j]
# Runtime: 6848 ms, faster than 5.01% of Python3 online submissions for Two Sum.
# Memory Usage: 14.6 MB, less than 18.14% of Python3 online submissions for Two Sum.
Il est tard. Écrivons plutôt en utilisant une carte de hachage.
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
hashmap = {}
for i in range(len(nums)):
num = nums[i]
complement = target - num
if num in hashmap:
return [hashmap[num],i]
else:
hashmap[complement] = i
# Runtime: 52 ms, faster than 60.15% of Python3 online submissions for Two Sum.
# Memory Usage: 15.3 MB, less than 5.11% of Python3 online submissions for Two Sum.
La vitesse s'est considérablement améliorée.
Il est important d'apprendre à écrire un langage et à l'écrire brièvement, mais c'est aussi l'une des principales raisons pour lesquelles l'apprentissage des structures de données et des algorithmes peut changer radicalement la vitesse en une seule écriture.
Je vais l'écrire ici comme un commandement à moi-même.
Cette façon d'écrire est meilleure! Je l'ai écrit dans cette langue! Si vous avez des questions, n'hésitez pas à commenter.
Recommended Posts