java程序输出88的0 1矩阵_《剑指Offer》Java实现--顺时针打印矩阵
題目描述
輸入一個矩陣,按照從外向里順時針的順序打印出每一個數字。測試用例如下圖:
測試數組
思路分析
這道題目并不難,關鍵在于邊界控制!每一層遍歷均從左上角開始,逐層往里完成遍歷。
Java代碼實現
/**
* 由外向內順時針打印矩陣數組
* @author Administrator
* @version 2018/10/12
*/
public class Exe31_PrintMatrixClockWisely {
public static void main(String[] args) {
int[][] matrix={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16},{21,22,23,24}};
printMatrixClockWisely(matrix);
}
public static void printMatrixClockWisely(int[][] matrix) {
//參數合法性檢查
if(matrix==null||matrix.length!=matrix[0].length){
throw new IllegalArgumentException();
}else {
int dimension=matrix.length;
int rowStart=0;
int colStart=0;
//分解工作,一圈一圈的打印
while(dimension>rowStart*2&&dimension>colStart*2){
printCircle(matrix, rowStart, colStart);
rowStart++;
colStart++;
}
}
}
private static void printCircle(int[][] matrix,int rowStart,int colStart) {
int dimension=matrix.length;
//從左向右打印
for(int i=colStart;i
System.out.print(matrix[rowStart][i]+" ");
}
//從上往下打印
for(int i=rowStart+1;i
System.out.print(matrix[i][dimension-rowStart-1]+" ");
}
//從右往左打印
for(int i=dimension-colStart-2;i>colStart-1;i--){
System.out.print(matrix[dimension-rowStart-1][i]+" ");
}
//從下往上打印
for(int i=dimension-rowStart-2;i>rowStart;i--){
System.out.print(matrix[i][colStart]+" ");
}
System.out.println();
}
}
總結
以上是生活随笔為你收集整理的java程序输出88的0 1矩阵_《剑指Offer》Java实现--顺时针打印矩阵的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 滤波器开发之三:基于算数平均的阶进平滑滤
- 下一篇: 比特币与手续费