Menu
CoddyTech

Rotting Oranges

Du erhältst ein Raster als Liste gleich langer Zeilen. Jede Zelle ist 0 (leer), 1 (eine frische Orange) oder 2 (eine faule Orange). Jede Minute wird jede frische Orange, die eine Seite mit einer faulen Orange teilt – oben, unten, links oder rechts –, faul. Gib die Anzahl der Minuten zurück, bis keine frische Orange mehr übrig ist, oder -1, falls manche frische Orange niemals faulen kann. Bei einem Raster ohne frische Orangen zu Beginn werden 0 Minuten benötigt.

Funktion

orangesRotting(grid: integer-2d-array) → integer
gridinteger-2d-array
das Raster, eine Liste mit 0, 1 und 2 pro Zeile
Gibt zurückinteger
die Minuten, bis keine Orange mehr frisch ist, oder -1, wenn das nie passiert

Einschränkungen

  • 1 ≤ grid.length ≤ 150
  • 1 ≤ grid[i].length ≤ 150
  • Jede Zeile hat dieselbe Länge.
  • Jedes grid[i][j] ist 0, 1 oder 2.

Beispiele

Eingabe
grid = [[2, 1, 1, 0], [0, 1, 0, 1], [1, 1, 1, 1]]
Ausgabe
6
Erklärung
Wenn man Zellen als (Zeile, Spalte) angibt, verlässt die Fäulnis (0,0) und folgt dem einzigen Weg: (0,1) in Minute 1, (0,2) und (1,1) in Minute 2, (2,1) in Minute 3, (2,0) und (2,2) in Minute 4, (2,3) in Minute 5. Die Orange bei (1,3) berührt nur (2,3), daher verdirbt sie als letzte in Minute 6.

lock icon+21 versteckte Tests beim Einreichen

challenge icon

Weiterführende Frage

Angenommen, jede frische Orange benötigt eine eigene Anzahl von Minuten, um zu verderben, sobald eine benachbarte Orange verdorben ist. Wie würdest du dann die Zeit bis zum Abschluss ermitteln?

Code zurücksetzen
def orangesRotting(grid):
    # Schreibe hier den Code
Testfälle

Fall 1

Fall 2

Fall 3

Eingabe

grid = [[2, 1, 1, 0], [0, 1, 0, 1], [1, 1, 1, 1]]

Erwartet

6