Menu
CoddyTech

Rotting Oranges

ŚrednieGrafyKolejkapython iconjava iconcpp iconc iconjs icon+10

Otrzymujesz siatkę jako listę wierszy o równej długości. Każda komórka ma wartość 0 (pusta), 1 (świeża pomarańcza) lub 2 (zgniła pomarańcza). W każdej minucie każda świeża pomarańcza, która sąsiaduje bokiem ze zgniłą pomarańczą — u góry, na dole, z lewej lub z prawej strony — gnije. Zwróć liczbę minut, po których nie pozostanie żadna świeża pomarańcza, albo -1, jeśli jakaś świeża pomarańcza nigdy nie zgnije. Siatka, w której od początku nie ma świeżych pomarańczy, wymaga 0 minut.

Funkcja

orangesRotting(grid: integer-2d-array) → integer
gridinteger-2d-array
siatka, jedna lista wartości 0, 1 i 2 w każdym wierszu
Zwracainteger
liczba minut do momentu, gdy żadna pomarańcza nie będzie świeża, lub -1, jeśli to nigdy nie nastąpi

Ograniczenia

  • 1 ≤ grid.length ≤ 150
  • 1 ≤ grid[i].length ≤ 150
  • Każdy wiersz ma tę samą długość.
  • Każdy element grid[i][j] ma wartość 0, 1 lub 2.

Przykłady

Wejście
grid = [[2, 1, 1, 0], [0, 1, 0, 1], [1, 1, 1, 1]]
Wyjście
6
Wyjaśnienie
Zapisując komórki jako (wiersz, kolumna), zaraza opuszcza (0,0) i podąża jedyną ścieżką: (0,1) w 1. minucie, (0,2) i (1,1) w 2. minucie, (2,1) w 3. minucie, (2,0) i (2,2) w 4. minucie, (2,3) w 5. minucie. Pomarańcza w (1,3) styka się tylko z (2,3), więc zgnije jako ostatnia, w 6. minucie.

lock icon+21 ukrytych testów przy wysłaniu

challenge icon

Pytanie dodatkowe

Załóżmy, że każda świeża pomarańcza potrzebuje określonej liczby minut, aby zgnić, gdy zgnije sąsiadująca z nią pomarańcza. Jak w takim razie obliczyć czas zakończenia?

Zresetuj kod
def orangesRotting(grid):
    # Napisz kod tutaj
Przypadki testowe

Przypadek 1

Przypadek 2

Przypadek 3

Wejście

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

Oczekiwane

6