Heim > Artikel > Backend-Entwicklung > Zählen Sie unbewachte Zellen im Raster
2257. Zählen Sie unbewachte Zellen im Raster
Schwierigkeit:Mittel
Themen:Array, Matrix, Simulation
Sie erhalten zwei ganze Zahlen m und n, die ein 0-indiziertes m x n-Gitter darstellen. Sie erhalten außerdem zwei ganzzahlige 2D-Arrays „guards“ und „walls“, wobei „guards[i] = [rowi, coli]“ und „walls[j] = [rowj, colj] repräsentieren die Positionen des iten Wächters und jthWand bzw.
Ein Wachmann kannjede Zelle in den vier Himmelsrichtungen (Norden, Osten, Süden oder Westen) von seiner Position aus sehen, es sei denn, er wird durch eine Mauer oder einen anderen Wachmann behindert. Eine Zelle ist bewacht, wenn es mindestens einen Wächter gibt, der sie sehen kann.
Gibtdie Anzahl der unbesetzten Zellen zurück, die nicht bewacht sind.
Beispiel 1:
Beispiel 2:
Einschränkungen:
Hinweis:
Lösung:
Wir müssen die Zellen markieren, die von mindestens einem Wächter bewacht werden. Die Wachen können in vier Himmelsrichtungen sehen (Norden, Süden, Osten und Westen), ihre Sicht wird jedoch durch Mauern blockiert. Wir können diesen Prozess simulieren und die Anzahl der unbewachten Zellen zählen.
Gitterinitialisierung: Erstellen Sie ein 2D-Array zur Darstellung des Gitters. Markieren Sie Zellen mit Wänden, Wachen und bewachten Bereichen, während wir iterieren.
Simulation der Schutzabdeckung:
Unbewachte Zellen zählen: Nachdem Sie alle Wächter verarbeitet haben, zählen Sie Zellen, die weder Wände, Wächter noch bewacht sind.
Lassen Sie uns diese Lösung in PHP implementieren: 2257. Zählen Sie unbewachte Zellen im Raster
Erläuterung:
Initialisierung:
- Das Raster wird für leere Zellen mit 0 initialisiert. Wände und Wachen sind mit eindeutigen Konstanten gekennzeichnet.
Wächtersimulation:
- Simulieren Sie für jeden Wächter eine Bewegung in alle vier Richtungen und markieren Sie Zellen als bewacht, bis Sie auf eine Wand oder einen anderen Wächter stoßen.
Ungeschützte Zellen zählen:
- Nachdem alle Wachen verarbeitet wurden, durchlaufen Sie das Raster und zählen die Zellen, die immer noch als 0 markiert sind.
Leistung:
Daher beträgt die Gesamtkomplexität O(m * n), was angesichts der Problembeschränkungen effizient ist.
Kontaktlinks
Wenn Sie diese Serie hilfreich fanden, denken Sie bitte darüber nach, dem Repository einen Stern auf GitHub zu geben oder den Beitrag in Ihren bevorzugten sozialen Netzwerken zu teilen? Ihre Unterstützung würde mir sehr viel bedeuten!
Wenn Sie weitere hilfreiche Inhalte wie diesen wünschen, folgen Sie mir gerne:
Das obige ist der detaillierte Inhalt vonZählen Sie unbewachte Zellen im Raster. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!