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 31 ab Null "581. Kürzestes unsortiertes kontinuierliches Subarray"
Grundsätzlich möchte ich die einfache Akzeptanz in absteigender Reihenfolge lösen.
Twitter Ich mache es.
Es dauerte übrigens einen Monat. Herzliche Glückwünsche.
437. Path Sum III Der Schwierigkeitsgrad ist einfach. Easy of Top 100 Liked Questions geben Sie dies ein und es sind nur noch 3 Fragen übrig.
Jeder Knoten erhält eine Dichotomie, die einen ganzzahligen Wert enthält.
Finden Sie die Anzahl der Pfade, die die Werte der Knoten addieren, um einen bestimmten Wert "Summe" zu erhalten.
Die Route muss nicht am übergeordneten Knoten oder Blatt beginnen oder enden, sondern muss sich nach unten bewegen (nur vom übergeordneten Knoten zum untergeordneten Knoten).
Beachten Sie, dass die Anzahl der Knoten in der Baumstruktur 1.000 oder weniger beträgt und der Wertebereich zwischen -1.000.000 und 1.000.000 liegt.
root = [10,5,-3,3,2,null,11,3,-2,null,1], sum = 8
10
/ \
5 -3
/ \ \
3 2 11
/ \ \
3 -2 1
Return 3. The paths that sum to 8 are:
- 5 -> 3
Ich habe es mit dfs mit rekursiv gelöst.
# 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:
ans = 0
def pathSum(self, root: TreeNode, sum: int) -> int:
def dfs(root,sums,start):
if not root:
return 0
sums -= root.val
if sums == 0:
self.ans += 1
dfs(root.left,sums,False)
dfs(root.right,sums,False)
if start:
dfs(root.left,sum,True)
dfs(root.right,sum,True)
dfs(root,sum,True)
return self.ans
# Runtime: 940 ms, faster than 24.67% of Python3 online submissions for Path Sum III.
# Memory Usage: 15.1 MB, less than 6.82% of Python3 online submissions for Path Sum III.
Zuerst dachte ich, ich könnte einfach mit "root" und "summen" anrufen, aber ich könnte nicht alleine damit schreiben (ich könnte es vielleicht schreiben, aber ich könnte jetzt nicht daran denken), also als ich in die Diskussion schaute Fast die gleiche Antwort, wobei Boolean verwendet wird, um den aktuellen Knoten als Ausgangspunkt zu behandeln. Ich benutze es und da ich es sehr ordentlich implementieren konnte, werde ich es so veröffentlichen, wie es ist.
Trotzdem sind Leute mit starken Algorithmen erstaunlich ...
Du musst härter arbeiten.
Wenn es eine gute Antwort gibt, werde ich sie hinzufügen.
Recommended Posts