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.
Apparemment, de nombreux ingénieurs prennent des mesures sur le site appelé LetCode.
C'est un site qui forme la puissance de l'algorithme qui peut résister au test de codage effectué au début, et c'est un chemin inévitable pour ceux qui veulent faire carrière dans une entreprise de technologie à l'étranger.
Je l'ai écrit en grand, mais je n'ai pas l'intention d'avoir une telle interview pour le moment.
Cependant, en tant qu'ingénieur informatique, il serait préférable d'avoir le même niveau de puissance d'algorithme qu'une personne, alors j'aimerais résoudre le problème de manière irrégulière et écrire la méthode que je pensais à l'époque sous forme de mémo.
Je le résolve avec Python3.
Table de codes Leet commençant à zéro
Dernière fois Leet Code Day54 à partir de zéro "1290. Convertir le nombre binaire d'une liste liée en nombre entier"
À l'heure actuelle, je donne la priorité au moyen des 100 questions les plus appréciées. Easy a été résolu, donc si vous êtes intéressé, veuillez vous rendre à la table.
Twitter Je le fais.
Le niveau de difficulté est moyen. Extrait des 100 questions les plus appréciées.
Le problème est donné l'entier positif «n». Concevons un algorithme qui écrit toutes les combinaisons de ce nombre de parenthèses.
J'ai récemment appris que les nombres naturels incluent 0 en mathématiques à l'université ...
For example, given n = 3, a solution set is: [ "((()))", "(()())", "(())()", "()(())", "()()()" ]
C'est plus facile à comprendre si vous regardez l'exemple.
# Solution
C'est un problème de combinaison, donc je n'ai pas pu le résoudre au premier coup d'œil, alors j'ai jeté un coup d'œil à la discussion et étudié la façon de penser.
Il est plus facile de comprendre si vous divisez les parenthèses en droite, «droite», gauche et «gauche».
Je pense que cela peut être résolu relativement facilement si vous appliquez le `n` comme chaque argument et continuez à ajouter jusqu'à ce qu'ils deviennent 0, ce que l'on appelle la méthode de retour arrière.
En tant que conditionnement spécifique
- Le premier et le dernier placement des parenthèses doivent être absolus
--Ajouter au tableau lorsque les deux sont 0
- Dans d'autres cas, la fonction est rappelée récursivement.
Le code ci-dessous résume les `dfs` séparément pour les rendre plus faciles à lire.
```python
class Solution:
def generateParenthesis(self, n: int) -> List[str]:
ans = []
self.dfs(n,n,"",ans)
return ans
def dfs(self,left,right,path,ans):
if left > right or left < 0 or right < 0:
return
if left == 0 and right == 0:
ans.append(path)
return
self.dfs(left-1,right,path+'(',ans)
self.dfs(left,right-1,path+')',ans)
# Runtime: 32 ms, faster than 78.59% of Python3 online submissions for Generate Parentheses.
# Memory Usage: 13.9 MB, less than 93.80% of Python3 online submissions for Generate Parentheses.
J'ai récemment remarqué que lorsque LeetCode passe de Facile à Moyen, il gère plus de variables, et j'ai l'impression qu'il est plus facile à résoudre si vous avez des probabilités mathématiques, un nombre de cas et une connaissance des nombres entiers plutôt que d'être familiarisé avec les langages de programmation. J'ai fait.
La plupart des personnes qui reçoivent ces entretiens sont dans les domaines de l'information et de la science, et j'ai le sentiment qu'une telle connaissance ne semble pas être une douleur, mais quand j'ai vu un problème avec quelques personnes comme moi? Dans de nombreux cas, il semble nécessaire d'acquérir de telles connaissances afin de contester des niveaux de difficulté plus élevés.
Alors c'est tout pour cette fois. Je vous remercie pour votre travail acharné.
Recommended Posts