Menu
CoddyTech

Swim in Rising Water

Você recebe uma grade n × n de alturas que contém todos os números de 0 a n²-1 exatamente uma vez, como uma lista de linhas. A chuva começa no instante 0 e, no instante t, a água fica na altura t em toda parte, então toda célula com altura menor ou igual a t fica submersa. Você começa na célula do canto superior esquerdo. Você pode nadar de uma célula para outra que compartilhe um lado com ela quando ambas estiverem submersas, e nadar não leva tempo. Retorne o primeiro instante em que você pode chegar à célula do canto inferior direito.

Função

swimInWater(grid: integer-2d-array) → integer
gridinteger-2d-array
as alturas, como uma lista de n linhas com n números
Retornainteger
o momento mais cedo em que você pode chegar à célula do canto inferior direito

Restrições

  • n == grid.length == grid[i].length
  • 1 ≤ n ≤ 100
  • 0 ≤ grid[i][j] ≤ n²-1
  • Cada valor de 0 a n²-1 aparece exatamente uma vez.

Exemplos

Entrada
grid = [[0, 2], [3, 1]]
Saída
2
Explicação
Pela célula superior direita, a rota é 0, 2, 1, e sua célula mais alta é 2. Pela célula inferior esquerda, a rota é 0, 3, 1, com a célula mais alta sendo 3. No tempo 2, a primeira rota está submersa, então a resposta é 2.

lock icon+13 testes ocultos ao enviar

challenge icon

Para ir além

Se as alturas pudessem se repetir e chegar a 10^9, qual das suas abordagens ainda funcionaria sem alterações, e sobre o que você faria uma busca binária?

Redefinir código
def swimInWater(grid):
    # Escreva o código aqui
Casos de teste

Caso 1

Caso 2

Caso 3

Entrada

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

Esperado

2