Menu
CoddyTech

Rotting Oranges

Eşit uzunlukta satırlardan oluşan bir liste olarak bir ızgara verilir. Her hücre 0 (boş), 1 (taze bir portakal) veya 2 (çürük bir portakal) değerini alır. Her dakika, çürük bir portakalla yukarı, aşağı, sola veya sağa bitişik olan her taze portakal çürür. Hiç taze portakal kalmayana kadar geçen dakika sayısını döndür; bazı taze portakallar asla çürüyemiyorsa -1 döndür. Başlangıçta taze portakal içermeyen bir ızgara için 0 dakika gerekir.

Fonksiyon

orangesRotting(grid: integer-2d-array) → integer
gridinteger-2d-array
ızgara, her satır için 0, 1 ve 2'den oluşan bir liste
Döndürürinteger
Hiçbir portakalın taze kalmasına kadar geçen dakika sayısı; bu hiç gerçekleşmezse -1

Kısıtlar

  • 1 ≤ grid.length ≤ 150
  • 1 ≤ grid[i].length ≤ 150
  • Her satırın uzunluğu aynıdır.
  • Her grid[i][j] 0, 1 veya 2 değerini alır.

Örnekler

Girdi
grid = [[2, 1, 1, 0], [0, 1, 0, 1], [1, 1, 1, 1]]
Çıktı
6
Açıklama
Hücreleri (satır, sütun) şeklinde yazarak, çürüme (0,0) hücresinden başlar ve tek yolu izler: 1. dakikada (0,1), 2. dakikada (0,2) ve (1,1), 3. dakikada (2,1), 4. dakikada (2,0) ve (2,2), 5. dakikada (2,3). (1,3) hücresindeki portakal yalnızca (2,3) hücresine temas eder, bu yüzden en son, 6. dakikada çürür.

lock iconGönderirken +21 gizli test

challenge icon

Ek soru

Çürümüş bir komşusu olduğunda her taze portakalın çürümesi için kendine özgü bir dakika sayısı gerektiğini varsayalım. Peki bitiş zamanını nasıl bulurdun?

Kodu sıfırla
def orangesRotting(grid):
    # Kodu buraya yazın
Test durumları

Durum 1

Durum 2

Durum 3

Girdi

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

Beklenen

6