输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 1213 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.
import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> printMatrix(int [][] matrix) {
ArrayList<Integer> array = new ArrayList<Integer>();
int n= matrix.length;
int row=matrix[0].length;
if(n==1)
{ for(int z=0;z<row;z++)
array.add(matrix[n-1][z]);
return array;
}
if(row==1)
{ for(int z=0;z<n;z++)
array.add(matrix[z][row-1]);
return array;
}
int length=Math.min(n, row)/2;;
if(Math.min(n, row)%2!=0)length++;
int i=0;
//if(length%2!=0)length++;
while(i<length){
//int i=count;
for(int j=i;j<row-i;j++){
System.out.println(matrix[i][j]);
array.add(matrix[i][j]);
}
for(int k=i+1;k<n-i;k++){
System.out.println(matrix[k][row-i-1]);
array.add(matrix[k][row-i-1]);
}
for(int m=row-i-2;m>=i&&n-i-1>i;m--){注释n-i-1>i是防止同一行重复打印
System.out.println(matrix[n-i-1][m]);
array.add(matrix[n-i-1][m]);
}
for(int l=n-i-2;l>i;l--){
System.out.println(matrix[l][i]);
array.add(matrix[l][i]);
}
i++;
}
return array;
}
}