Menu
CoddyTech

Swim in Rising Water

Recibes una cuadrícula n × n de alturas que contiene todos los números del 0 al n²-1 exactamente una vez, en forma de lista de filas. La lluvia empieza en el instante 0 y, en el instante t, el agua alcanza la altura t en todas partes, así que todas las celdas con altura t o menor están bajo el agua. Empiezas en la celda superior izquierda. Puedes nadar de una celda a otra que comparta un lado con ella cuando ambas estén bajo el agua, y nadar no lleva tiempo. Devuelve el instante más temprano en el que puedes llegar a la celda inferior derecha.

Función

swimInWater(grid: integer-2d-array) → integer
gridinteger-2d-array
las alturas, como una lista de n filas de n números
Devuelveinteger
el momento más temprano en que puedes llegar a la celda inferior derecha

Restricciones

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

Ejemplos

Entrada
grid = [[0, 2], [3, 1]]
Salida
2
Explicación
A través de la celda superior derecha, la ruta es 0, 2, 1, y su celda más alta es 2. A través de la celda inferior izquierda, es 0, 3, 1, con la celda más alta en 3. En el tiempo 2, la primera ruta está bajo el agua, así que la respuesta es 2.

lock icon+13 pruebas ocultas al enviar

challenge icon

Para ir más allá

Si las alturas pudieran repetirse y llegar a 10^9, ¿cuál de tus enfoques seguiría funcionando sin cambios y sobre qué harías una búsqueda binaria?

Restablecer código
def swimInWater(grid):
    # Escribe el código aquí
Casos de prueba

Caso 1

Caso 2

Caso 3

Entrada

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

Esperado

2