Menu
CoddyTech

Swim in Rising Water

Se te da una cuadrícula de alturas n × n que contiene cada número del 0 al n²-1 exactamente una vez. En el instante t, el agua alcanza la altura t en todas partes, así que todas las celdas cuya altura es t o menos están bajo el agua. Empiezas en la celda de la esquina superior izquierda. Puedes nadar, sin que transcurra tiempo, hasta una celda que comparta un lado con la tuya cuando ambas estén bajo el agua. Devuelve el primer instante en que puedes estar en la celda de la esquina inferior derecha.

Función

swimInWater(grid: integer-2d-array) → integer
gridinteger-2d-array
las alturas, como una lista de n filas con 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
Por la celda superior derecha, la ruta es 0, 2, 1, con la celda más alta en 2. Por 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.
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í

Prueba #1

Prueba #2

Prueba #3

Argumento

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

Salida Esperada

2