顺时针打印矩阵
解法一:
public class Solution {
ArrayList<Integer> res = new ArrayList();
public ArrayList<Integer> printMatrix(int [][] matrix) {
if(matrix == null){
return null;
}
int start = 0;
int col = matrix[0].length;
int row = matrix.length;
while(col > start * 2 && row > start * 2){
printMatrixBycircle(matrix, row, col, start);
start++;
}
return res;
}
public void printMatrixBycircle(int[][] matrix, int row, int col, int start){
int endX = col - 1 - start;
int endY = row - 1 - start;
for(int i =start; i <= endX;i++){
res.add(matrix[start][i]);
}
if(endY > start){
for(int i = start+1;i<=endY;i++){
res.add(matrix[i][endX]);
}
}
if(endX > start && endY > start){
for(int i = endX - 1; i>=start;i--){
res.add(matrix[endY][i]);
}
}
if(endY > start+1 && endX > start){
for(int i = endY - 1;i > start;i--){
res.add(matrix[i][start]);
}
}
}
}