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.

lock icon+21 testes ocultos ao enviar

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
Casos de teste

Caso 1

Caso 2

Caso 3

Entrada

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

Esperado

6