對於一個矩陣,請設計一個算法從左上角(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];
}
}