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 codes Leet commençant à zéro
Dernière fois Leet Code Day 27 "101. Symmetric Tree" à partir de zéro
En gros, je voudrais résoudre l'acceptation facile par ordre décroissant.
Twitter Je le fais.
198. House Robber Le niveau de difficulté est facile. Extrait des 100 questions les plus appréciées.
Vous êtes un voleur qui envisage de voler dans une maison le long de la rue. Une certaine somme d'argent est cachée dans chaque maison. La seule restriction pour empêcher le vol de chaque maison est que chaque maison adjacente a un système de sécurité attaché et la police est automatiquement avertie si deux maisons adjacentes sont violées la même nuit.
Considérez la liste des nombres entiers non négatifs qui représentent le montant d'argent pour chaque ménage et trouvez le montant maximum qui peut être volé ce soir sans avertir la police.
Regardons le problème sur la base de l'explication.
Example 1:
Input: [1,2,3,1] Output: 4 Explanation: Rob house 1 (money = 1) and then rob house 3 (money = 3). Total amount you can rob = 1 + 3 = 4.
Dans cet exemple, 4 est retourné car le montant prélevé sur les premier et troisième logements est le plus élevé.
Example 2:
Input: [2,7,9,3,1] Output: 12 Explanation: Rob house 1 (money = 2), rob house 3 (money = 9) and rob house 5 (money = 1). Total amount you can rob = 2 + 9 + 1 = 12.
Dans cet exemple, 12 est retourné car le montant d'argent volé dans les premier, troisième et cinquième logements est le plus important.
class Solution:
def rob(self, nums: List[int]) -> int:
pre = cur = 0
for i in nums:
pre,cur = cur,max(pre+i,cur)
return cur
# Runtime: 20 ms, faster than 98.32% of Python3 online submissions for House Robber.
# Memory Usage: 14.1 MB, less than 9.09% of Python3 online submissions for House Robber.
Je pense que vous pouvez terminer la course en léchant la liste par l'avant et en remplaçant «cur» par «pre» et «pre + i» et «cur» par «cur», selon ce qui est le plus grand.
Par exemple. Dans le cas de «[1,2,3,1]» dans l'exemple
pre
= 0,1,2,4
cur
= 1,2,4,4
L'ordre est le suivant, et finalement la bonne réponse de 4 est renvoyée.
Je pense que c'est un problème qui peut être mieux résolu en se concentrant sur la façon de bien le faire fonctionner lors du léchage par l'avant sans mal réfléchir.
S'il y a une bonne réponse, je l'ajouterai.
Recommended Posts