AcWing 40. 顺时针打印矩阵 -- JAVA新手向
原题链接
中等
JAVA 代码
class Solution {
public int[] printMatrix(int[][] matrix) {
if (matrix == null || matrix.length == 0 || matrix[0].length == 0){
return new int[]{};
}
ArrayList<Integer> list = new ArrayList<>();
int layer = 0;
int size = matrix.length * matrix[0].length;
while (list.size() < size){
// 向右
for (int i = layer; i < matrix[0].length - layer; i++) {
list.add(matrix[layer][i]);
}
// 向下,+ 1是因为向右时遍历过
for (int i = layer + 1; i < matrix.length - layer; i++) {
list.add(matrix[i][matrix[0].length - 1 - layer]);
}
// 向左, - 1是因为向下时遍历过
for (int i = matrix[0].length - 1 - layer - 1; i >= layer; i--) {
list.add(matrix[matrix.length - layer - 1][i]);
}
// 向上, - 1是因为向左时遍历过
for (int i = matrix.length - 1 - layer - 1; i >= layer + 1; i--) {
list.add(matrix[i][layer]);
}
layer++;
}
int[] res = new int[size];
int i = 0;
for (int j = 0; j < res.length; j++) {
res[j] = list.get(j);
}
return res;
}
}