Menu
CoddyTech

Rotting Oranges

Bạn nhận được một lưới dưới dạng danh sách các hàng có độ dài bằng nhau. Mỗi ô là 0 (trống), 1 (cam tươi) hoặc 2 (cam thối). Mỗi phút, mỗi quả cam tươi nằm cạnh một quả cam thối ở phía trên, phía dưới, bên trái hoặc bên phải sẽ chuyển thành cam thối. Hãy trả về số phút cho đến khi không còn quả cam tươi nào, hoặc -1 nếu có quả cam tươi không bao giờ bị thối. Nếu ban đầu lưới không có quả cam tươi nào thì cần 0 phút.

Hàm

orangesRotting(grid: integer-2d-array) → integer
gridinteger-2d-array
lưới, một danh sách gồm 0, 1 và 2 cho mỗi hàng
Trả vềinteger
số phút cho đến khi không còn quả cam nào tươi, hoặc -1 nếu điều đó không bao giờ xảy ra

Ràng buộc

  • 1 ≤ grid.length ≤ 150
  • 1 ≤ grid[i].length ≤ 150
  • Mỗi hàng có cùng độ dài.
  • Mỗi grid[i][j] là 0, 1 hoặc 2.

Ví dụ

Đầu vào
grid = [[2, 1, 1, 0], [0, 1, 0, 1], [1, 1, 1, 1]]
Đầu ra
6
Giải thích
Các ô có tọa độ (hàng, cột). Quá trình thối lan theo con đường duy nhất từ (0,0) và đến (2,3) ở phút thứ 5. Quả cam ở (1,3) chỉ tiếp xúc với (2,3), nên nó thối cuối cùng, ở phút thứ 6.
challenge icon

Câu hỏi mở rộng

Giả sử mỗi quả cam tươi cần một số phút riêng để bị thối sau khi quả cam bên cạnh bị thối. Vậy bạn sẽ tìm thời điểm tất cả cam bị thối như thế nào?

Đặt lại code
def orangesRotting(grid):
    # Viết code ở đây

Kiểm thử #1

Kiểm thử #2

Kiểm thử #3

Đối số

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

Đầu ra mong đợi

6