题目
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。
解
void PrintMatrixClockwisely(int[][] nums,int columns,int rows){
if(nums==null||columns<=0||rows<=0){
return;
}
int start=0;
while( columns>start*2 && rows>start*2){
//控制打印多少圈儿,
PrintMatrixInCircle(nums,columns,rows,start);
start++;
}
}
void PrintMatrixInCircle(int[][] nums, int columns, int rows, int start) {
int endX=columns-1-start;
int endY=columns-1-start;
//从左到右打印一行
for(int i=start;i<=endX;i++){
System.out.print(nums[start][i]+" ");
}
//从上到下打印一列
if(start<endY){
for(int i=start+1;i<=endY;i++ ){
System.out.print(nums[i][endX]+" ");
}
}
//从右到左打印一行
if(start<endX && start<endY){
for(int i=endX-1;i>=start;i--){
System.out.print(nums[endY][i]+" ");
}
}
//从下到上打印一列
if(start<endX && start<endY-1){
for(int i=endY-1;i>=start+1;i--){
System.out.print(nums[i][start]+" ");
}
}
}