Es scheint, dass Codierungstests in Ingenieurinterviews im Ausland durchgeführt werden, und in vielen Fällen besteht die Hauptsache darin, bestimmte Funktionen und Klassen entsprechend dem Thema zu implementieren.
Als Gegenmaßnahme scheint eine Website namens Let Code Maßnahmen zu ergreifen.
Eine Site, die algorithmische Leistung trainiert, die Codierungstests standhält, über die früh gesprochen wird.
Ich denke, es ist besser, die Algorithmuskraft eines Menschen zu haben, also werde ich das Problem unregelmäßig lösen und die Methode, die ich damals dachte, als Memo aufschreiben.
Letztes Mal Leet Code Day 27 "101. Symmetric Tree" ab Null
Grundsätzlich möchte ich die einfache Akzeptanz in absteigender Reihenfolge lösen.
Twitter Ich mache es.
198. House Robber Der Schwierigkeitsgrad ist einfach. Auszug aus den 100 beliebtesten Fragen.
Sie sind ein Dieb, der plant, aus einem Haus entlang der Straße zu stehlen. In jedem Haus ist ein bestimmter Geldbetrag versteckt. Die einzige Einschränkung zur Verhinderung von Raubüberfällen in jedem Haus besteht darin, dass an jedes benachbarte Haus ein Sicherheitssystem angeschlossen ist und die Polizei automatisch benachrichtigt wird, wenn zwei benachbarte Häuser in derselben Nacht verletzt werden.
Betrachten Sie die Liste der nicht negativen ganzen Zahlen, die den Geldbetrag für jeden Haushalt darstellen, und ermitteln Sie den Höchstbetrag, der heute Abend gestohlen werden kann, ohne die Polizei zu warnen.
Schauen wir uns das Problem anhand der Erklärung an.
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.
In diesem Beispiel wird 4 zurückgegeben, da der Betrag aus dem ersten und dritten Haus am größten ist.
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.
In diesem Beispiel wird 12 zurückgegeben, da der Geldbetrag aus dem ersten, dritten und fünften Haus am größten ist.
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.
Ich denke, dass Sie das Rennen beenden können, indem Sie die Liste von vorne lecken und "cur" durch "pre" und "pre + i" und "cur" durch "cur" ersetzen, je nachdem, welcher Wert größer ist.
Zum Beispiel. Im Fall von "[1,2,3,1]" im Beispiel
pre
= 0,1,2,4
cur
= 1,2,4,4
Die Reihenfolge ist wie folgt und schließlich wird die richtige Antwort von 4 zurückgegeben.
Ich denke, dass es ein Problem ist, das besser gelöst werden kann, wenn man sich darauf konzentriert, wie man es gut bedient, wenn man von vorne leckt, ohne schlecht zu denken.
Wenn es eine gute Antwort gibt, werde ich sie hinzufügen.
Recommended Posts