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.
Apparemment, de nombreux ingénieurs prennent des mesures sur le site appelé LetCode.
C'est un site qui forme la puissance algorithmique qui peut résister au test de codage effectué au début de l'histoire, et c'est une voie 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'un être humain, donc 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 Day 84 à partir de zéro "142. Cycle de liste liée II"
Twitter Je le fais.
** Blog technique Commencé! !! ** ** Je pense que la technologie écrira sur LetCode, Django, Nuxt, etc. ** C'est plus rapide à mettre à jour **, merci pour votre coopération!
Le niveau de difficulté est moyen. Dans la continuité de la dernière fois, ceci est un extrait de LeetCode 60 questions que je veux résoudre pour la préparation d'un entretien de codage.
Le problème est que vous recevez d'abord une chaîne, par exemple la chaîne PAYPALISHIRING
. Ces chaînes de caractères sont écrites en zigzag sur un nombre prédéterminé de lignes comme indiqué ci-dessous. (C'est une bonne idée d'afficher ce modèle dans une police fixe pour plus de lisibilité)
P A H N
A P L S I I G
Y I R
Si vous lisez ces lignes ligne par ligne, vous obtiendrez "" PAHNAPLSIIGYIR "`.
Écrivez le code qui prend ces chaînes et les convertit en spécifiant le nombre de lignes.
string convert(string s, int numRows).
Example 1:
Input: s = "PAYPALISHIRING", numRows = 3 Output: "PAHNAPLSIIGYIR"
Example 2:
Input: s = "PAYPALISHIRING", numRows = 4 Output: "PINALSIGYAHRPI" Explanation:
P I N
A L S I G
Y A H R
P I
Au fait, j'ai cloné la liste des problèmes, mais le problème que j'ai résolu était 23/60 à ce stade.
Comme ça ↓
Il est important de s'amuser à résoudre, alors j'aimerais répondre à tout dans une fourchette raisonnable. Oh, et il y a des problèmes qui ne peuvent être résolus sans s'abonner. En premier lieu, même si je m'abonne, je vais l'ignorer car c'est un droit de poster un problème.
class Solution:
def convert(self, s: str, numRows: int) -> str:
if numRows == 1 or numRows >= len(s):
return s
num,step,ans = 0,0,['']*numRows
for w in s:
ans[num] += w
if num == 0:
step = 1
elif num == numRows - 1:
step = -1
num += step
return "".join(ans)
# Runtime: 64 ms, faster than 65.13% of Python3 online submissions for ZigZag Conversion.
# Memory Usage: 14.1 MB, less than 10.13% of Python3 online submissions for ZigZag Conversion.
Préparez autant de tableaux qu'il y a de «numRows» et ajoutez-en chacun. En gérant l'augmentation / la diminution avec step
après l'ajout, par exemple, dans le cas de test
PAYPALISHIRING
Dans ce cas, vous pouvez voir qu'il peut être inséré dans le tableau comme indiqué ci-dessous.
['PAHN', 'APLSIIG', 'YIR']
Si vous faites finalement `` join () with
'', le
"PAHNAPLSIIGYIR" `de str sera renvoyé en toute sécurité, et ainsi de suite.
C'est 24/60. Alors c'est tout pour cette fois. Je vous remercie pour votre travail acharné.
Recommended Posts