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.
Anscheinend ergreifen viele Ingenieure Maßnahmen auf der Website namens LetCode.
Es ist eine Site, die die Algorithmusleistung trainiert, die dem Codierungstest standhält, der in der frühen Geschichte durchgeführt wurde, und es ist ein unvermeidlicher Weg für diejenigen, die eine Karriere bei einem ausländischen Technologieunternehmen aufbauen möchten.
Ich habe es groß geschrieben, aber ich habe im Moment keine Pläne für ein solches Interview.
Als IT-Ingenieur ist es jedoch besser, die gleiche Algorithmusleistung wie eine Person zu haben. Daher möchte ich das Problem unregelmäßig lösen und die Methode, die ich damals dachte, als Memo aufschreiben.
Ich löse es mit Python3.
Letztes Mal Leet Code Day54 ab Null "1290. Binärzahl in einer verknüpften Liste in Ganzzahl konvertieren"
Im Moment priorisiere ich das Medium der 100 beliebtesten Fragen. Easy wurde gelöst. Wenn Sie interessiert sind, gehen Sie bitte zum Tisch.
Twitter Ich mache es.
Der Schwierigkeitsgrad ist Mittel. Auszug aus den 100 beliebtesten Fragen.
Das Problem erhält die positive ganze Zahl "n". Lassen Sie uns einen Algorithmus entwerfen, der alle Kombinationen dieser Anzahl von Klammern schreibt.
Ich habe kürzlich erfahren, dass natürliche Zahlen 0 in der College-Mathematik enthalten ...
For example, given n = 3, a solution set is: [ "((()))", "(()())", "(())()", "()(())", "()()()" ]
Es ist einfacher zu verstehen, wenn Sie sich das Beispiel ansehen.
# Lösung
Da es sich um ein Kombinationsproblem handelt, konnte ich es auf den ersten Blick nicht lösen. Ich warf einen Blick auf die Diskussion und studierte die Denkweise.
Es ist leichter zu verstehen, wenn Sie die Klammern in rechts, rechts und links und links unterteilen.
Ich denke, dass es relativ einfach gelöst werden kann, wenn Sie das `n` als jedes Argument anwenden und weiter hinzufügen, bis sie 0 werden, was die sogenannte Backtrack-Methode ist.
Als spezifische Konditionierung
- Die erste und letzte Platzierung von Klammern muss absolut sein
- Fügen Sie dem Array hinzu, wenn beide 0 sind
- In anderen Fällen wird die Funktion rekursiv abgerufen.
Der folgende Code fasst `dfs` separat zusammen, um sie leichter lesbar zu machen.
```python
class Solution:
def generateParenthesis(self, n: int) -> List[str]:
ans = []
self.dfs(n,n,"",ans)
return ans
def dfs(self,left,right,path,ans):
if left > right or left < 0 or right < 0:
return
if left == 0 and right == 0:
ans.append(path)
return
self.dfs(left-1,right,path+'(',ans)
self.dfs(left,right-1,path+')',ans)
# Runtime: 32 ms, faster than 78.59% of Python3 online submissions for Generate Parentheses.
# Memory Usage: 13.9 MB, less than 93.80% of Python3 online submissions for Generate Parentheses.
Ich habe kürzlich festgestellt, dass LeetCode beim Wechsel von Easy zu Medium mehr Variablen verarbeitet, und ich habe den Eindruck, dass es einfacher zu lösen ist, wenn Sie mathematische Wahrscheinlichkeiten, Anzahl der Fälle und ganzzahlige Kenntnisse haben, als mit Programmiersprachen vertraut zu sein. Ich tat.
Die meisten Leute, die diese Interviews erhalten, sind in den Bereichen Information und Wissenschaft tätig, und ich habe das Gefühl, dass dieses Wissen kein Schmerz zu sein scheint, aber als ich ein Problem mit einigen Leuten wie mir sah? In vielen Fällen scheint es notwendig zu sein, dieses Wissen zu erwerben, um höhere Schwierigkeitsgrade herauszufordern.
Das war's für diese Zeit. Danke für deine harte Arbeit.
Recommended Posts