Finden Sie einen effizienten Weg
Hallo Leute! Heute habe ich drei Probleme mit LeetCode gelöst: Unique Paths, Spiral Matrix und N-Queens. Lassen Sie uns diese Probleme durchgehen.
Problem mit eindeutigen Pfaden
Wir erhalten zwei Zahlen, die die Anzahl der Zeilen und die Anzahl der Spalten darstellen. Unsere Aufgabe besteht darin, die Gesamtzahl der eindeutigen Pfade zu ermitteln, um die Position (m-1,n-1) von (0,0) aus zu erreichen. Um dieses Problem zu lösen, können wir einen rekursiven Ansatz verfolgen. Wir können bei (0,0) beginnen und rekursiv Schritte finden, um nach rechts und unten zu gelangen, bis wir die erforderliche Position erreichen. Um insgesamt eindeutige Pfade zu finden, würden wir die richtigen Schritte zu den unteren Schritten hinzufügen und sie zurückgeben. Allerdings gibt es bei diesem Ansatz ein kleines Problem: Die Lösungen können sich mehrmals wiederholen. Um dies zu überwinden, besteht der alternative Ansatz darin, eine DP-Matrix zu verwenden. Wir erstellen eine DP-Matrix mit der gleichen Anzahl von Zeilen und Spalten wie die Eingabe und initialisieren alle Positionen der DP-Matrix mit 1. Schließlich geben wir den Wert in der Lats-Zelle der DP-Matrix als Gesamtzahl eindeutiger Pfade zurück.
Spiralmatrix
Wir erhalten eine Matrix und müssen eine Liste zurückgeben, die die Elemente der Matrix in spiralförmiger Reihenfolge enthält. Um dieses Problem zu lösen, können wir Indizierungsgrenzen als Bedingungen für die Ausführung einer Schleife verwenden. Wir durchlaufen die Matrix von links nach rechts und können eine for-Schleife verwenden. Dann bewegen wir uns mit einer weiteren Schleife von der oberen rechten Ecke zur unteren rechten Ecke. Mit einer dritten Schleife gehen wir von der unteren rechten Ecke zur unteren linken Ecke. Schließlich bewegen wir uns mit einer vierten Schleife von der unteren linken Ecke zur oberen linken Ecke. Auf diese Weise verwenden wir vier verschiedene Schleifen zum Durchlaufen in alle vier Richtungen und steuern sie mit Indexierungsgrenzen.
N-Queens
Uns wird eine Eingabezahl n gegeben, wir müssen die Anzahl der Möglichkeiten finden, n Königinnen in einer nxn-Matrix so zu platzieren, dass sich keine zwei Königinnen gegenseitig angreifen. Das bedeutet, dass sich keine zwei Damen in derselben Reihe, Spalte oder Diagonale befinden sollten. Um dieses Problem zu lösen, können wir Rekursions- und Backtracking-Konzepte verwenden. Wir können zunächst eine Rekursion durchführen, um den Vorgang mehrmals zu wiederholen. denn wir müssen alle möglichen Möglichkeiten finden, Königinnen zu platzieren. Wenn wir nicht die richtige Position zum Platzieren der Königin gefunden haben, wird ein Zurückverfolgen durchgeführt. Dann können wir „Q“ durch „.“ ersetzen und den Vorgang für die nächste Position wiederholen.
Wir können die obige Lösung optimieren, indem wir drei Listen verwenden. Eine Liste besteht darin, die Anzahl der Zeilen im Auge zu behalten. Nehmen wir an, wir haben n Zeilen. Wir werden n Nullen in die Liste einfügen und die jeweilige Null durch eine ersetzen, wenn diese bestimmte Zeile eine Königin hat. Dadurch wird unnötiges Zurückverfolgen vermieden. Ebenso gilt die zweite Liste für die untere Diagonale und die dritte Liste für die obere Diagonale. Beide Diagonallisten enthalten 2n-1 Elemente, die alle zunächst auf Null gesetzt sind. Während wir die Matrix durchlaufen, um Königinnen zu platzieren, aktualisieren wir die entsprechende Zeilen- oder Diagonalliste, indem wir 0 durch 1 ersetzen, wenn die Königin platziert wird. Dies zeigt an, dass in der entsprechenden Diagonale oder Reihe keine Damen mehr platziert werden können. Auf diese Weise funktioniert dieser Ansatz effizient.
Ich hoffe, dass meine Erfahrung hilfreich sein wird.
Das obige ist der detaillierte Inhalt vonFinden Sie einen effizienten Weg. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Wie kann man nicht erkannt werden, wenn Sie Fiddlereverywhere für Man-in-the-Middle-Lesungen verwenden, wenn Sie FiddLereverywhere verwenden ...

Fastapi ...

Verwenden Sie Python im Linux -Terminal ...

Wie lehre ich innerhalb von 10 Stunden die Grundlagen für Computer -Anfänger für Programmierungen? Wenn Sie nur 10 Stunden Zeit haben, um Computer -Anfänger zu unterrichten, was Sie mit Programmierkenntnissen unterrichten möchten, was würden Sie dann beibringen ...

Über Pythonasyncio ...

Verständnis der Anti-Crawling-Strategie von Investing.com Viele Menschen versuchen oft, Nachrichten von Investing.com (https://cn.investing.com/news/latest-news) zu kriechen ...

Laden Sie die Gurkendatei in Python 3.6 Umgebungsfehler: ModulenotFoundError: Nomodulenamed ...

Diskussion über die Gründe, warum Pipeline -Dateien beim Lernen und Verwendung von Scapy -Crawlern für anhaltende Datenspeicher nicht geschrieben werden können, können Sie auf Pipeline -Dateien begegnen ...
