Menu
CoddyTech

Swim in Rising Water

On vous donne une grille n × n de hauteurs contenant chaque nombre de 0 à n²-1 exactement une fois. À l’instant t, l’eau atteint partout la hauteur t : toutes les cases de hauteur inférieure ou égale à t sont donc sous l’eau. Vous commencez dans la case en haut à gauche. Vous pouvez rejoindre instantanément à la nage une case qui partage un côté avec la vôtre lorsque les deux cases sont sous l’eau. Retournez le premier instant auquel vous pouvez vous trouver dans la case en bas à droite.

Fonction

swimInWater(grid: integer-2d-array) → integer
gridinteger-2d-array
les hauteurs, sous la forme d’une liste de n lignes de n nombres
Renvoieinteger
le moment le plus tôt où vous pouvez atteindre la cellule en bas à droite

Contraintes

  • n == grid.length == grid[i].length
  • 1 ≤ n ≤ 100
  • 0 ≤ grid[i][j] ≤ n²-1
  • Chaque valeur de 0 à n²-1 apparaît exactement une fois.

Exemples

Entrée
grid = [[0, 2], [3, 1]]
Sortie
2
Explication
En passant par la cellule en haut à droite, le trajet est 0, 2, 1, avec une cellule maximale de 2. En passant par celle en bas à gauche, il est de 0, 3, 1, avec une cellule maximale de 3. Au temps 2, le premier trajet est sous l’eau.
challenge icon

Pour aller plus loin

Si les hauteurs pouvaient se répéter et atteindre 10^9, laquelle de tes approches fonctionnerait encore sans changement, et sur quoi effectuerais-tu une recherche binaire ?

Réinitialiser le code
def swimInWater(grid):
    # Écrivez le code ici

Test #1

Test #2

Test #3

Argument

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

Résultat attendu

2