Maison  >  Article  >  développement back-end  >  . Matrice spirale III

. Matrice spirale III

王林
王林original
2024-08-09 09:18:51531parcourir

885. Matrice spirale III

Moyen

Sujets :Tableau, Matrice, Simulation

Vous commencez à la cellule (rStart, cStart) d'une grille lignes x cols orientée vers l'est. Le coin nord-ouest se trouve sur la première ligne et la première colonne de la grille, et le coin sud-est se trouve sur la dernière ligne et la dernière colonne.

Vous marcherez en forme de spirale dans le sens des aiguilles d'une montre pour visiter chaque position de cette grille. Chaque fois que vous sortez de la limite de la grille, nous continuons notre marche en dehors de la grille (mais pouvons revenir à la limite de la grille plus tard). Finalement, on atteint toutes les lignes * cols espaces de la grille.

Renvoyer un tableau de coordonnées représentant les positions de la grille dans l'ordre dans lequel vous les avez visitées.

Exemple 1 :

. Spiral Matrix III

  • Entrée : lignes = 1, cols = 4, rStart = 0, cStart = 0
  • Sortie : [[0,0],[0,1],[0,2],[0,3]]

Exemple 2 :

. Spiral Matrix III

  • Entrée : lignes = 5, cols = 6, rStart = 1, cStart = 4
  • Sortie : [[1,4],[1,5],[2,5],[2,4],[2,3],[1,3],[0,3] ,[0,4],[0,5],[3,5],[3,4],[3,3],[3,2],[2,2],[1,2],[ 0,2],[4,5],[4,4],[4,3],[4,2],[4,1],[3,1],[2,1],[1, 1],[0,1],[4,0],[3,0],[2,0],[1,0],[0,0]]

Contraintes :

  • 1 <= lignes, colonnes <= 100
  • 0 <= rDémarrer < lignes
  • 0 <= cDémarrer < cols

Solution :

Pour résoudre ce problème, nous pouvons suivre ces étapes :

  1. Tableau de direction : utilisez un tableau de direction pour faciliter les déplacements dans le bon ordre (est → sud → ouest → nord). Chaque direction aura un changement correspondant dans les indices de ligne et de colonne.
  2. Gestion des étapes : Vous devez contrôler le nombre de pas à effectuer dans chaque direction. Au départ, vous vous déplacez d'un pas vers l'est, puis d'un pas vers le sud, de 2 pas vers l'ouest, de 2 pas vers le nord, et ainsi de suite.
  3. Vérification des limites : assurez-vous qu'après chaque mouvement, vous vérifiez si la nouvelle position se trouve dans les limites de la grille. Si c'est le cas, ajoutez-le au tableau de résultats.
  4. Condition d'arrêt : Arrêtez la boucle une fois que vous avez visité toutes les positions lignes * cols.

Implémentons cette solution en PHP : 885. Matrice spirale III






Explication:

  1. Directions : le tableau de directions contient le changement de ligne et de colonne pour se déplacer vers l'est, le sud, l'ouest et le nord.
  2. Mouvement : Nous commençons à (rStart, cStart) et nous déplaçons selon les directions du motif en spirale.
  3. Vérification des limites : n'ajoutez la position au résultat que si elle se trouve dans la grille.
  4. Contrôle des pas : stepCount gère le nombre de pas effectués dans la direction actuelle avant de tourner. Il augmente après deux tours.
  5. Terminaison : La boucle continue jusqu'à ce que toutes les positions de la grille aient été visitées.

Cette approche garantit que nous visitons chaque cellule de la grille dans l'ordre en spirale requis.

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 :

  • LinkedIn
  • GitHub

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn