对于一个矩阵,请设计一个算法从左上角(mat[0][0])开始,顺时针打印矩阵元素。
给定int矩阵mat,以及它的维数nxm,请返回一个数组,数组中的元素为矩阵元素的顺时针输出。
public int[] clockwisePrint(int[][] mat, int n, int m) {
int i=0;
int[] index=new int[1];
int [] result=new int[n*m];
int temp=0;
while(index[0]<n*m){
getMat(mat,result,i,n-i,m-i,index);
i++;
}
return result;
}
//s表示矩阵的起点
public static void getMat(int[][] mat,int[] result,int s,int n,int m,int[] index){
int i=s;
int j=s;
//循环的第一行的时候
for(;j<m;j++){
result[index[0]]=mat[i][j];
index[0]++;
}
i++;
j--;
for(;i<n;i++){
result[index[0]]=mat[i][j];
index[0]++;
//System.out.print(result[index]+" ");
}
if(index[0]>=m*n){
return;
}
i--;
j--;
for(;j>=s;j--){
result[index[0]++]=mat[i][j];
}
//第二列
i--;
j++;
for(;i>s;i--){
result[index[0]++]=mat[i][j];
}
}