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 Day18 ab Null "53. Maximum Subarray"
Grundsätzlich möchte ich die einfache Akzeptanz in absteigender Reihenfolge lösen.
121. Best Time to Buy and Sell Stock
Wenn Sie jemals einen Wettkampfprofi gespielt haben, haben Sie wahrscheinlich ein ähnliches Problem gesehen. Algorithmus und Datenstruktur zur Erfassung des Programmierwettbewerbs Besonders in diesem Buch.
Ein Array mit den Aktienkursen für jedes Datum wird angegeben. Da Transaktionen nur einmal zulässig sind, besteht das Problem darin, einen Algorithmus zu entwerfen, der den Gewinn maximiert. Sie können es nicht verkaufen, bevor Sie es kaufen.
Input: [7,1,5,3,6,4] Output: 5 Explanation: Buy on day 2 (price = 1) and sell on day 5 (price = 6), profit = 6-1 = 5. Not 7-1 = 6, as selling price needs to be larger than buying price.
Sie können den maximalen Gewinn erzielen, indem Sie kaufen, wenn der Aktienkurs 1 beträgt, und verkaufen, wenn der Aktienkurs 6 beträgt. Und es gibt 5 zurück, was der Gewinn zu dieser Zeit ist.
Input: [7,6,4,3,1] Output: 0 Explanation: In this case, no transaction is done, i.e. max profit = 0.
In diesem Fall wird 0 zurückgegeben, da keine profitable Kombination vorhanden ist.
Als ich das Problem sah, fragte ich mich leicht verständlich, ob es eine Möglichkeit gibt, eine bestimmte Sequenz von vorne zu lecken, den Minimalwert mit dem Maximalwert zu vergleichen und zu aktualisieren.
Lass es uns trotzdem versuchen.
class Solution:
def maxProfit(self, prices: List[int]) -> int:
mx, mn = 0, prices and prices[0]
for i in range(1,len(prices)):
if prices[i] > prices[i-1]:
mx = max(mx,prices[i]-mn)
else:
mn = min(mn,prices[i])
return mx
# Runtime: 68 ms, faster than 43.79% of Python3 online submissions for Best Time to Buy and Sell Stock.
# Memory Usage: 15.2 MB, less than 5.75% of Python3 online submissions for Best Time to Buy and Sell Stock.
Ich denke nicht, dass es eine gute Antwort ist, weil es wie die Idee scheint, dass es gelöst werden sollte ...
Ich habe mich gefragt, ob es eine gute Antwort gibt, und ich habe mir die Diskussion angesehen, aber es war "float (inf)" Ich habe mich gefragt, was es ist, weil es viele Antworten gibt, und als ich es nachgeschlagen habe, war es ein Objekt namens "inf", das Unendlichkeit darstellt.
class Solution:
def maxProfit(self, prices: List[int]) -> int:
mx, mn = 0, float('inf')
for price in prices:
mn = min(mn, price)
pro = price - mn
mx = max(mx, pro)
return mx
# Runtime: 72 ms, faster than 26.68% of Python3 online submissions for Best Time to Buy and Sell Stock.
# Memory Usage: 15.1 MB, less than 5.75% of Python3 online submissions for Best Time to Buy and Sell Stock.
Wenn ich es mit float (inf) umschreibe, sieht es so aus. Ich weiß nicht viel, also ist das Anschauen von Diskussionen eine Lernerfahrung.
Wenn es eine Antwort gibt, die gut aussieht, werde ich sie hinzufügen.
Recommended Posts