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 Tag 30 ab Null "234. Palindrome Linked List"
Grundsätzlich möchte ich die einfache Akzeptanz in absteigender Reihenfolge lösen.
Twitter Ich mache es.
581. Shortest Unsorted Continuous Subarray Der Schwierigkeitsgrad ist einfach. Auszug aus den 100 beliebtesten Fragen.
Das Problem erhält ein Array von ganzen Zahlen. Wenn Sie dieses Array in aufsteigender Reihenfolge sortieren, suchen Sie ein zusammenhängendes Unterarray, das das gesamte Array in aufsteigender Reihenfolge sortieren kann. Das Problem besteht darin, das kürzeste Unterarray unter ihnen zu finden und seine Länge zurückzugeben.
Betrachten wir ein Beispiel.
Example 1: Input: [2, 6, 4, 8, 10, 9, 15] Output: 5 Explanation: You need to sort [6, 4, 8, 10, 9] in ascending order to make the whole array sorted in ascending order.
Wenn Sie dies sortieren, wird das gesamte Array in aufsteigender Reihenfolge organisiert. Das kürzeste Unterarray reicht von "6" bis "9", sodass die Anzahl der Elemente erfasst und 5 zurückgegeben wird.
Bereiten Sie die sortierte Variable vor, die Variable "start", die das Element von Anfang an abruft, und die Variable "last", die das Element vom Ende abruft. Wenn die Werte des sortierten Arrays und des ursprünglichen Arrays nicht übereinstimmen, wird der Index dieses Elements festgelegt. Ersatz für "Start". Tun Sie dies auch für "last", und die Differenz +1 ist die Länge der erforderlichen Anzahl von Elementen.
Schließlich haben wir eine Funktion implementiert, die "last --start + 1" zurückgibt, wenn "last-start" gilt, andernfalls "0".
class Solution:
def findUnsortedSubarray(self, nums: List[int]) -> int:
start = last = 0
num = sorted(nums)
for i in range(len(nums)):
if nums[i] != num[i]:
start = i
break
for i in range(len(nums)-1,-1,-1):
if nums[i] != num[i]:
last = i
break
return last - start + 1 if last - start else 0
# Runtime: 196 ms, faster than 98.85% of Python3 online submissions for Shortest Unsorted Continuous Subarray.
# Memory Usage: 15.2 MB, less than 5.00% of Python3 online submissions for Shortest Unsorted Continuous Subarray.
Es war eine ziemlich einfache Idee, aber sie ist besser als ich erwartet hatte. Die Anzahl der Fragen, die mir am besten gefallen haben, hat erheblich abgenommen, daher denke ich, dass sie in Zukunft nur noch mittel sein werden.
In Bezug auf Hard weiß ich nicht, ob es richtig gelöst werden kann, aber ich werde es lösen, wenn es eine Gelegenheit gibt.
Recommended Posts