题目描述
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.
分析:可以假设,首先把第一行的数据输出,然后把矩阵余下的部分进行向左扭转90°,这个操作类似魔方的扭转;接着重复上述操作即可。
我的Code如下:
import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> printMatrix(int [][] matrix) {
ArrayList<Integer> list = new ArrayList<>();
while(matrix.length>0){
for(int i=0;i<matrix[0].length; i++){
list.add(matrix[0][i]);
}
matrix = turnLeftMatrix(matrix);
}
return list;
}
public int[][] turnLeftMatrix(int[][] matrix){
int m = matrix.length-1;
int n = matrix[0].length;
//先把matrix的第一行给干掉,得到一个新的数组
int[][] newMatrix = new int[m][n];
for(int i=1;i<=m; i++){
for(int j=0;j<n; j++){
newMatrix[i-1][j] = matrix[i][j];
}
}
//扭转操作
int[][] num = new int[n][m];
for(int i=n-1; i>=0; i--){
for(int j=0; j<m; j++){
num[n-i-1][j] = newMatrix[j][i];
}
}
return num;
}
}
网友评论