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 39 "494. Zielsumme" ab Null
Grundsätzlich möchte ich die einfache Akzeptanz in absteigender Reihenfolge lösen.
Twitter Ich mache es.
Dies ist das 40. Mal. Ich weiß nicht, wann ich aufhören soll.
114. Flatten Binary Tree to Linked List
Der Schwierigkeitsgrad ist Mittel. Auszug aus den 100 beliebtesten Fragen.
Entwerfen Sie bei gegebenen Dichotomien einen Algorithmus, der sich in eine flache Liste verwandelt.
Dies allein ist schwer zu verstehen, schauen wir uns also ein Beispiel an.
1
/ \
2 5
/ \ \
3 4 6
The flattened tree should look like:
1
\
2
\
3
\
4
\
5
\
6
Immerhin ist es leicht zu verstehen, wenn man sich das Beispiel ansieht.
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def flatten(self, root: TreeNode) -> None:
prelevel = None
"""
Do not return anything, modify root in-place instead.
"""
def dfs(node):
if node:
dfs(node.right)
dfs(node.left)
nonlocal prelevel
node.right = prelevel
node.left = None
prelevel = node
dfs(root)
# Runtime: 36 ms, faster than 74.14% of Python3 online submissions for Flatten Binary Tree to Linked List.
# Memory Usage: 14.6 MB, less than 8.70% of Python3 online submissions for Flatten Binary Tree to Linked List.
Ich habe es mit dfs gelöst. Das auf Vorstufe zuzuweisende Element bleibt erhalten, das Element wird einfach "node.right" zugewiesen, "None" wird "node.left" zugewiesen und das nächste Element wird in "vorab" eingefügt.
Ich habe eine gute Antwort bekommen. Diesmal hier. Danke für deine harte Arbeit.
Recommended Posts