题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。
思路:依次从外圈打印至里圈;每一圈的打印函数,上下两行均是完整打印,两列取其中。
Java代码如下:
import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> printMatrix(int [][] matrix) {
ArrayList<Integer> result=new ArrayList<Integer>();
if(matrix==null){
return result;
}
int rows=matrix.length;
int columns=matrix[0].length;
int start=0;
while(columns>2*start&&rows>2*start){
printCycle(matrix,columns,rows,start,result);
start++;
}
return result;
}
public void printCycle(int [][] matrix,int columns,int rows,int start,ArrayList<Integer> result){
int endX=columns-start-1;
int endY=rows-start-1;
for(int i=start;i<=endX;i++){
result.add(matrix[start][i]);
}
if(start+1<endY){
for(int i=start+1;i<=endY-1;i++){
result.add(matrix[i][endX]);
}
}
if(start<endY){
for(int i=endX;i>=start;i--){
result.add(matrix[endY][i]);
}
}
if(start+1<endY&&start<endX){
for(int i=endY-1;i>=start+1;i--){
result.add(matrix[i][start]);
}
}
}
}