Menu
CoddyTech

Rotting Oranges

MoyenGraphesFilepython iconjava iconcpp iconc iconjs icon+10

Vous recevez une grille sous forme de liste de lignes de même longueur. Chaque cellule contient 0 (vide), 1 (une orange fraîche) ou 2 (une orange pourrie). Chaque minute, chaque orange fraîche qui partage un côté avec une orange pourrie, en haut, en bas, à gauche ou à droite, pourrit. Retournez le nombre de minutes jusqu’à ce qu’il ne reste plus aucune orange fraîche, ou -1 si certaines oranges fraîches ne peuvent jamais pourrir. Une grille ne contenant aucune orange fraîche au départ nécessite 0 minute.

Fonction

orangesRotting(grid: integer-2d-array) → integer
gridinteger-2d-array
la grille, une liste de 0, 1 et 2 par ligne
Renvoieinteger
le nombre de minutes jusqu’à ce qu’il n’y ait plus d’orange fraîche, ou -1 si cela n’arrive jamais

Contraintes

  • 1 ≤ grid.length ≤ 150
  • 1 ≤ grid[i].length ≤ 150
  • Chaque ligne a la même longueur.
  • Chaque grid[i][j] vaut 0, 1 ou 2.

Exemples

Entrée
grid = [[2, 1, 1, 0], [0, 1, 0, 1], [1, 1, 1, 1]]
Sortie
6
Explication
En écrivant les cellules sous la forme (ligne, colonne), la pourriture quitte (0,0) et suit le seul chemin : (0,1) à la minute 1, (0,2) et (1,1) à la minute 2, (2,1) à la minute 3, (2,0) et (2,2) à la minute 4, (2,3) à la minute 5. L’orange en (1,3) ne touche que (2,3) ; c’est donc la dernière à pourrir, à la minute 6.

lock icon+21 tests cachés à la soumission

challenge icon

Pour aller plus loin

Supposons que chaque orange fraîche ait besoin de son propre nombre de minutes pour pourrir une fois qu’une orange voisine est pourrie. Comment trouverais-tu alors le temps nécessaire pour que toutes les oranges pourrissent ?

Réinitialiser le code
def orangesRotting(grid):
    # Écrivez le code ici
Cas de test

Cas 1

Cas 2

Cas 3

Entrée

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

Attendu

6