题解 | #顺时针打印矩阵#
顺时针打印矩阵
http://www.nowcoder.com/practice/9b4c81a02cd34f76be2659fa0d54342a
旋转魔方的java解法
1 2 3
4 5 6
7 8 9
第一次 取 1 2 3
经过旋转 数组变成
6 9
5 8
4 7
再取 第一行 6 9
循环往复 符合递归的解法
import java.util.ArrayList; public class Solution { //设置返回值 private static ArrayList<Integer> res = new ArrayList<>(); public static ArrayList<Integer> printMatrix(int [][] matrix) { if (matrix == null) return res; //行列都为1的情况可以直接遍历打印 if (matrix.length == 1 || matrix[0].length == 1){ for (int[] ints : matrix) { for (int anInt : ints) { res.add(anInt); } } return res; } //否则取第一行 for (int i = 0; i < matrix[0].length; i++) { res.add(matrix[0][i]); } //旋转matrix int[][] newMatrix = transMatrix(matrix); return printMatrix(newMatrix); } //旋转数组记得一一对应 private static int[][] transMatrix(int[][] matrix) { int row = matrix.length; int col = matrix[0].length; int[][] resMatrix = new int[col][row - 1]; for (int i = col-1; i >= 0; i--) { for (int j = 1; j < row; j++) { resMatrix[col-i-1][j-1] = matrix[j][i] ; } } return resMatrix; } }