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. No instante t, a água está na altura t em todos os lugares, então toda célula com altura menor ou igual a t fica submersa. Você começa na célula superior esquerda. Você pode nadar, sem gastar tempo, até uma célula que compartilhe um lado com a sua quando ambas estiverem submersas. Retorne o primeiro instante em que você pode estar na célula inferior direita.

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 menor tempo em que você pode chegar à célula inferior direita

Restrições

  • n == grid.length == grid[i].length
  • 1 ≤ n ≤ 100
  • 0 ≤ grid[i][j] ≤ n²-1
  • Todos os valores de 0 a n²-1 aparecem 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, com a célula mais alta sendo 2. Pela célula inferior esquerda, é 0, 3, 1, com a célula mais alta sendo 3. No instante 2, a primeira rota está submersa.
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 a busca binária?

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

Teste #1

Teste #2

Teste #3

Argumento

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

Saída Esperada

2