public ArrayList<Integer> printMatrix(int [][] matrix) {
int lenRows = matrix.length;//矩阵的行长
int lenColumn = matrix[0].length;//列长
ArrayList<Integer> list = new ArrayList<Integer>();
if(lenRows <= 0 || lenColumn <= 0||matrix==null){
return list;
}
int start=0;//循环每次开始的点
while(lenRows > start * 2 && lenColumn > start * 2 ){
printMyResult(lenRows,lenColumn,start,list,matrix);
++start;
}
return list;
}
public void printMyResult(int lenRows,int lenColumn,int start,ArrayList<Integer> list,int[][] matrix){
int endColumn = lenColumn-1-start;//终止列
int endRows = lenRows-1-start; //终止行
/**
*1.上面代码总是要打印的
*2.右边代码打印必须是起始点小于终止行
*3.下面代码实现必须是起始点小于终止行和终止列
*4.左边代码执行的条件是起始点必须小于终止列,并且至少比终止行号小2
*/
//上面代码
for(int i = start; i <= endColumn ; i++){
list.add((matrix[start][i]));
}
//右边实现......
if( start < endRows){
for(int i=start+1; i<= endRows ; i++){
list.add((matrix[i][endColumn]));
}
}
//下面代码实现
if(start<endRows && start < endColumn){
for(int i=endColumn-1; i >= start ; i--){
list.add((matrix[endRows][i]));
}
}
//左边实现
if(start<endColumn&&start<endRows-1){
for(int i = endRows-1 ; i > start; i--){
list.add((matrix[i][start]));
}
}
}