【题目】 给定一个整型矩阵matrix,请按照转圈的方式打印它。
例如: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
public class PrintMatrix {
public void printMatrix(int[][] matrix){
// (tR,tC) 1 2 3 4
// 5 6 7 8
// 9 10 11 12
// 13 14 15 16 (dR,dC)
int tR = 0 ;
int tC = 0 ;
int dR = matrix.length - 1;
int dC = matrix[0].length - 1;
while(tR <= dR && tC <= dC)
//先打印外圈(1、2、3 4、8、12 16、15、14 13、9、5),
//再打印内圈(6 7 11 10)
printMatrix(matrix,tR++,tC++,dR--,dC--);
}
public void printMatrix(int[][] matrix,int tR,int tC,int dR,int dC){
//对边界处理
if(tC == dC)
for(int i = tR ; i <= dR ;i++)
System.out.print(matrix[i][tC]+" ");
else if(tR == dR)
for(int i = tC ; i <= dC ;i++)
System.out.print(matrix[tR][i]+" ");
else{
int curR = tR;
int curC = tC;
while(curC != dC)
System.out.print(matrix[tR][curC++]+" ");
while(curR != dR)
System.out.print(matrix[curR++][dC]+" ");
while(curC != tC)
System.out.print(matrix[dR][curC--]+" ");
while(curR != tR)
System.out.print(matrix[curR--][tR]+" ");
}
}
@Test
public void test(){
int [][] matrix = {{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
printMatrix(matrix);
}
}