] [Matrice spirale LeetCode 54. Spiral Matrix (Medium) (JAVA)
Sujet Adresse: https://leetcode.com/problems/spiral-matrix/
Description du sujet:
Etant donné une matrice d'éléments de mxn (m lignes, n colonnes), le retour de tous les éléments de la matrice dans l'ordre spirale.
Exemple 1:
Input:
[
[ 1, 2, 3 ],
[ 4, 5, 6 ],
[ 7, 8, 9 ]
]
Output: [1,2,3,6,9,8,7,4,5]
Exemple 2:
Input:
[
[1, 2, 3, 4],
[5, 6, 7, 8],
[9,10,11,12]
]
Output: [1,2,3,4,8,12,11,10,9,5,6,7]
Sous réserve de l'effet
Etant donné une matrice mxn d'éléments (m rangée, n-colonne), suivre un ordre hélicoïdal dans le sens horaire, les retours de tous les éléments dans la matrice.
approche de résolution de problèmes
1, chaque cycle comprenant une droite, une partie inférieure en quatre parties supérieure gauche
2, les cas limites d'un traitement spécial
class Solution {
public List<Integer> spiralOrder(int[][] matrix) {
List<Integer> res = new ArrayList<>();
if (matrix.length == 0 || matrix[0].length == 0) return res;
int len = Math.min(matrix.length, matrix[0].length);
for (int i = 0; i <= (len % 2 == 0 ? len / 2 - 1 : len / 2); i++) {
for (int j = i; j < matrix[0].length - i; j++) {
res.add(matrix[i][j]);
}
for (int j = i + 1; j < matrix.length - i; j++) {
res.add(matrix[j][matrix[0].length - 1 - i]);
}
for (int j = matrix[0].length - 1 - i - 1; j >= i && i < len / 2; j--) {
res.add(matrix[matrix.length - 1 - i][j]);
}
for (int j = matrix.length - 1 - i - 1; j > i && i < len / 2; j--) {
res.add(matrix[j][i]);
}
}
return res;
}
}
Lorsque l' exécution: 0 ms, battu 100,00% de tous les utilisateurs à soumettre en Java la
consommation de mémoire: 38,2 Mo, battre le 5,23% de tous les utilisateurs à soumettre en Java