Menu
CoddyTech

Rotting Oranges

MédioGrafosFilapython iconjava iconcpp iconc iconjs icon+10

Você recebe uma grade como uma lista de linhas de mesmo comprimento. Cada célula é 0 (vazia), 1 (uma laranja fresca) ou 2 (uma laranja podre). A cada minuto, cada laranja fresca que compartilha um lado com uma laranja podre, acima, abaixo, à esquerda ou à direita, apodrece. Retorne o número de minutos até que não reste nenhuma laranja fresca, ou -1 se alguma laranja fresca nunca puder apodrecer. Uma grade sem laranjas frescas no início precisa de 0 minutos.

Função

orangesRotting(grid: integer-2d-array) → integer
gridinteger-2d-array
a grade, uma lista de 0, 1 e 2 por linha
Retornainteger
os minutos até que nenhuma laranja esteja fresca, ou -1 se isso nunca acontecer

Restrições

  • 1 ≤ grid.length ≤ 150
  • 1 ≤ grid[i].length ≤ 150
  • Todas as linhas têm o mesmo comprimento.
  • Cada grid[i][j] é 0, 1 ou 2.

Exemplos

Entrada
grid = [[2, 1, 1, 0], [0, 1, 0, 1], [1, 1, 1, 1]]
Saída
6
Explicação
Representando as células como (linha, coluna), a podridão começa em (0,0) e segue o único caminho: (0,1) no minuto 1, (0,2) e (1,1) no minuto 2, (2,1) no minuto 3, (2,0) e (2,2) no minuto 4, (2,3) no minuto 5. A laranja em (1,3) só toca (2,3), então é a última a apodrecer, no minuto 6.
challenge icon

Para ir além

Suponha que cada laranja fresca precise de um número próprio de minutos para apodrecer depois que uma vizinha apodrece. Como você encontraria o tempo para que todas apodreçam, então?

Redefinir código
def orangesRotting(grid):
    # Escreva o código aqui

Teste #1

Teste #2

Teste #3

Argumento

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

Saída Esperada

6