. Matrice spirale III

Aug 09, 2024 am 09:18 AM

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

<?php
// Example Usage:
print_r(spiralMatrixIII(1, 4, 0, 0)); // [[0,0],[0,1],[0,2],[0,3]]
print_r(spiralMatrixIII(5, 6, 1, 4)); // [[1,4],[1,5],[2,5],[2,4], ...]
?>




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 de ce site Web
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

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

11 meilleurs scripts de raccourcissement d'URL PHP (gratuit et premium) 11 meilleurs scripts de raccourcissement d'URL PHP (gratuit et premium) Mar 03, 2025 am 10:49 AM

11 meilleurs scripts de raccourcissement d'URL PHP (gratuit et premium)

Introduction à l'API Instagram Introduction à l'API Instagram Mar 02, 2025 am 09:32 AM

Introduction à l'API Instagram

Travailler avec les données de session Flash dans Laravel Travailler avec les données de session Flash dans Laravel Mar 12, 2025 pm 05:08 PM

Travailler avec les données de session Flash dans Laravel

Misque de réponse HTTP simplifié dans les tests Laravel Misque de réponse HTTP simplifié dans les tests Laravel Mar 12, 2025 pm 05:09 PM

Misque de réponse HTTP simplifié dans les tests Laravel

Curl dans PHP: Comment utiliser l'extension PHP Curl dans les API REST Curl dans PHP: Comment utiliser l'extension PHP Curl dans les API REST Mar 14, 2025 am 11:42 AM

Curl dans PHP: Comment utiliser l'extension PHP Curl dans les API REST

Construisez une application React avec un Laravel Back End: Partie 2, React Construisez une application React avec un Laravel Back End: Partie 2, React Mar 04, 2025 am 09:33 AM

Construisez une application React avec un Laravel Back End: Partie 2, React

12 meilleurs scripts de chat PHP sur Codecanyon 12 meilleurs scripts de chat PHP sur Codecanyon Mar 13, 2025 pm 12:08 PM

12 meilleurs scripts de chat PHP sur Codecanyon

Notifications à Laravel Notifications à Laravel Mar 04, 2025 am 09:22 AM

Notifications à Laravel

See all articles