顺时针打印二维矩阵
作者:互联网
//顺时针打印矩阵 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); } }
标签:顺时针,int,矩阵,打印,lowRow,topRow,二维,public,topCol 来源: https://www.cnblogs.com/wzj4858/p/15820859.html