//顺时针打印矩阵
public class PrintMatrixSpiralOrder {
//打印边框
public static void printEdge(int[][] m,int topRow,int topCol,int lowRow,int lowCol){
//在同一行时
if(topRow == lowRow){
for(int i = topCol;i <= lowCol;i++){
System.out.print(m[topRow][i] + " ");
}
}
//在同一列时
else if(topCol == lowCol){
for(int i = topRow;i <= lowRow;i++){
System.out.print(m[i][topCol] + " ");
}
}
//不在同一行和同一列时
else {
int curRow = topRow;
int curCol = topCol;
//打印上边的边框
while(curCol != lowCol){
System.out.print(m[topRow][curCol] + " ");
curCol++;
}
//打印右边的边框
while(curRow != lowRow){
System.out.print(m[curRow][lowCol] + " ");
curRow++;
}
//打印底部的边框
while(curCol != topCol){
System.out.print(m[lowRow][curCol] + " ");
curCol--;
}
//打印左边的边框
while(curRow != topRow){
System.out.print(m[curRow][topCol] + " ");
curRow--;
}
}
}
//循环打印边框
public static void spiralOrderPrint(int[][] matrix){
int topRow = 0;
int topCol = 0;
int lowRow = matrix.length - 1;
int lowCol = matrix[0].length - 1;
//右左上角的点碰到右下角的点结束
while(topRow <= lowRow && topCol <= lowCol){
printEdge(matrix,topRow++,topCol++,lowRow--,lowCol--);
}
}
public static void main(String[] args){
int[][] matrix = {{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
spiralOrderPrint(matrix);
}
}
顺时针打印二维矩阵
最新推荐文章于 2020-11-17 11:39:12 发布