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.
Grundsätzlich möchte ich die einfache Akzeptanz in absteigender Reihenfolge lösen.
1389. Create Target Array in the Given Order
Das Problem ist -Das zurückgegebene Array ist anfangs leer.
Wenn Sie es sich nicht vorstellen können, lesen Sie es bitte.
class Solution:
def createTargetArray(self, nums: List[int], index: List[int]) -> List[int]:
target = []
for i in range(len(nums)):
target.insert(index[i],nums[i])
return target
# Runtime: 36 ms, faster than 36.25% of Python3 online submissions for Create Target Array in the Given Order.
# Memory Usage: 13.9 MB, less than 100.00% of Python3 online submissions for Create Target Array in the Given Order.
Das habe ich mir ausgedacht. Da in Constraints geschrieben wurde, dass die Anzahl der Elemente von nums und index gleich ist, sollten Sie sie einmal mit einer for-Anweisung drehen und die Anzahl der Elemente in die Einfügefunktion einfügen. Es ist jedoch nicht schnell und ich finde es zu banal.
Eine andere Idee war, in einer Weile Aussage zu schreiben, Laut Was ich getan habe, als ich Python schneller machen wollte scheint die while-Anweisung in Python langsamer zu sein.
Außerdem habe ich es für alle Fälle geschrieben und ausgeführt.
class Solution:
def createTargetArray(self, nums: List[int], index: List[int]) -> List[int]:
target = [0]*len(index)
j = 0
while j < len(index):
target.insert(index[j], nums[j])
j += 1
return target[:len(nums)]
# Runtime: 36 ms, faster than 36.25% of Python3 online submissions for Create Target Array in the Given Order.
# Memory Usage: 13.8 MB, less than 100.00% of Python3 online submissions for Create Target Array in the Given Order.
...Das? Gleiche Sache. Vielmehr verbraucht es etwas weniger Speicher.
Nun, vorerst würde sich dies nicht wesentlich beschleunigen.
Diejenigen, an die ich nicht denken konnte, waren diejenigen, die die Zip-Funktion verwendeten, und diejenigen, die Slices verwendeten.
Die Zip-Funktion entspricht der Beschreibung in der offiziellen Dokumentation.
Erstellen Sie einen Iterator, der Elemente aus jeder iterierbaren Datei sammelt. Diese Funktion gibt einen Iterator eines Taples zurück, wobei das i-te Tapple das i-te Element jeder Argumentsequenz enthält oder iterierbar ist. Dieser Iterator stoppt, wenn die kürzeste der eingegebenen Iterables erschöpft ist. Gibt bei einem einzelnen iterierbaren Argument einen Iterator zurück, der aus einem Ein-Element-Taple besteht. Ohne Argumente wird ein leerer Iterator zurückgegeben.
Damit,
hoge = [1,2,3,4,5]
foo = [6,7,8,9,10]
bar = zip(hoge,foo)
list(bar)
[(1,6),(2,7),(3,8),(4,9),(5,10)]
Es funktioniert wie oben.
Als derjenige, der dies verwendet, hier.
class Solution:
def createTargetArray(self, nums: List[int], index: List[int]) -> List[int]:
res = []
for i, v in zip(index, nums):
res.insert(i, v)
return res
# Runtime: 28 ms, faster than 90.08% of Python3 online submissions for Create Target Array in the Given Order.
# Memory Usage: 13.8 MB, less than 100.00% of Python3 online submissions for Create Target Array in the Given Order.
schnell! Wenn Sie danach ähnliche Probleme haben, ist es besser, die Zip-Funktion zu verwenden.
Vielen Dank für Ihre harte Arbeit, und ich hoffe, Sie können es lösen und einen Artikel schreiben.
~~ Lass uns meine Freizeit nutzen, um einen Artikel über die Geschwindigkeit von Pythons for- und while-Anweisungen zu schreiben ... ~~
Recommended Posts