2257. Comptez les cellules non gardées dans la grille
Difficulté :Moyen
Sujets :Tableau, Matrice, Simulation
Vous recevez deux entiers m et n représentant une grille indexée à 0 m x n. Vous recevez également deux tableaux d'entiers 2D guards et murs où guards[i] = [rowi, coli] et murs[j] = [rowj, colj] représentent les positions de la ième garde et jème mur respectivement.
Un garde peut voir chaque cellule dans les quatre directions cardinales (nord, est, sud ou ouest) à partir de sa position à moins obstruée par un mur ou un autre garde. Une cellule est gardée s'il y a au moins un gardien qui peut la voir.
Renvoyer le nombre de cellules inoccupées qui ne sont non gardées.
Exemple 1 :
Exemple 2 :
Contraintes :
Indice :
Solution :
Nous devons marquer les cellules qui sont gardées par au moins un gardien. Les gardes peuvent voir dans quatre directions cardinales (nord, sud, est et ouest), mais leur vision est bloquée par des murs. Nous pouvons simuler ce processus et compter le nombre de cellules non gardées.
Initialisation de la grille : Créez un tableau 2D pour représenter la grille. Marquez les cellules avec des murs, des gardes et des zones gardées au fur et à mesure de notre itération.
Simulation de la couverture de garde :
Comptage des cellules non gardées : Après avoir traité tous les gardes, comptez les cellules qui ne sont ni des murs, ni des gardes, ni gardées.
Implémentons cette solution en PHP : 2257. Compter les cellules non gardées dans la grille
Explication:
Initialisation :
- La grille est initialisée à 0 pour les cellules vides. Les murs et les gardes sont marqués de constantes uniques.
Simulation de garde :
- Pour chaque garde, simulez un mouvement dans les quatre directions, en marquant les cellules comme gardées jusqu'à ce qu'elles heurtent un mur ou un autre garde.
Comptage des cellules non gardées :
- Après avoir traité toutes les gardes, parcourez la grille et comptez les cellules toujours marquées comme 0.
Performance:
Ainsi, la complexité globale est O(m * n), ce qui est efficace compte tenu des contraintes du problème.
Liens de contact
Si vous avez trouvé cette série utile, pensez à donner une étoile au référentiel sur GitHub ou à partager la publication sur vos réseaux sociaux préférés ?. Votre soutien signifierait beaucoup pour moi !
Si vous souhaitez du contenu plus utile comme celui-ci, n'hésitez pas à me suivre :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!