Je me prépare pour une interview et je suis bloqué sur cette question depuis un certain temps maintenant. Quelqu'un pourrait-il m'aider s'il vous plaît avec le code. Si ce n'est pas complet alors peut-être un extrait de celui-ci? .. S'il vous plaîtTraverse 2D Array en spirale utilisant la récursivité
Répondre
Python 2, imprime une liste imbriquée 2D dans le sens horaire, à partir du coin en haut à gauche du centre:
>>> def clockwise(r):
... return list(r[0]) + clockwise(list(reversed(zip(*r[1:])))) if r else []
...
>>> a = [
... [ 1, 2, 3],
... [ 5, 6, 7],
... [ 9, 10, 11]]
>>> clockwise(a)
[1, 2, 3, 7, 11, 10, 9, 5, 6]
>>> a = [
... [ 1, 2, 3, 4],
... [ 5, 6, 7, 8],
... [ 9, 10, 11, 12],
... [13, 14, 15, 16]]
>>> clockwise(a)
[1, 2, 3, 4, 8, 12, 16, 15, 14, 13, 9, 5, 6, 7, 11, 10]
Alors qu'est-ce qui se passe ici? L'argument à clockwise
est un tableau à deux dimensions r
. Nous voulons imprimer son contenu de gauche à droite, dans le sens des aiguilles d'une montre. Donc, si le tableau à deux dimensions n'est pas vide, alors nous pouvons imprimer son premier élément, qui est la ligne du haut. Ensuite, nous voulons imprimer les derniers éléments des lignes restantes (les chiffres sur la droite). Nous ne voulons pas nous répéter. Donc ce que nous faisons, c'est de transformer les lignes restantes de sorte que les prochains numéros à imprimer soient sur la rangée supérieure. Nous faisons cela en transposant les lignes restantes (de sorte qu'elles deviennent des colonnes), puis en les inversant.
Peut-être que l'algorithme devient plus clair si je l'écris dans Haskell:
import Data.List
clockwise :: [[a]] -> [a]
clockwise (x:xs) = x ++ (clockwise $ reverse $ transpose $ xs)
clockwise _ = []
- 1. 2d Tableau dans l'ordre en spirale
- 2. F # Create 2D Array
- 3. Aide en utilisant la récursivité en Java
- 4. 2d array confusion
- 5. images Array 2D swapping
- 6. 2D Array Question Java
- 7. Conversion d'une ArrayList en une Array 2D
- 8. algorithme spirale en C#
- 9. Filtrer un arbre en utilisant la récursivité
- 10. C#: Copier la section de 2D-Array
- 11. Foreach et 2D Array PHP
- 12. Php 2d tableau comme C# 2d array/struct
- 13. Générer paresseux "spirale" dans Scala
- 14. sortie Array PHP 2D toutes les combinaisons
- 15. Ajouter 2d int array à NSDictionary
- 16. PHP 2D Array to MySQL Database
- 17. Comment analyser correctement le fichier CSV en 2d Array?
- 18. C++ 2d Array Classe Fonction Appeler Aide
- 19. Profondeur de suivi en récursivité
- 20. : La récursivité du modèle échoue
- 21. Récursivité infinie en Python
- 22. iPhone Quartz 2d développement en utilisant C++?
- 23. différence entre la récursivité structurelle et la récursivité accumulative
- 24. Tableaux 2D utilisant NSMutableArray
- 25. en utilisant php array dans jquery
- 26. Récursivité seulement 2 enregistrements de niveau en utilisant sql commun
- 27. Traverse rectangulaire matrice en bandes diagonales
- 28. C# - Copie Array en utilisant CopyTo() -Aide
- 29. Alternance Majuscules en Array utilisant PHP
- 30. Éviter la récursivité
+1, belle réponse – ChristopheD
belle réponse à coup sûr! Mais je suis plus intéressé par l'approche et l'algorithme utilisés. S'il vous plaît aider. –
Je vais l'expliquer en une seconde :) – Stephan202