题解 | #顺时针打印矩阵#
顺时针打印矩阵
http://www.nowcoder.com/practice/9b4c81a02cd34f76be2659fa0d54342a
按圈打印
public class Solution {
public ArrayList<Integer> printMatrix(int [][] matrix) {
ArrayList<Integer> arraylist = new ArrayList();
int lx = 0 , ly = 0;
int rx = matrix.length -1;
int ry = matrix[0].length -1;
while(lx <= rx && ly <= ry ){
addToArray(lx++,ly++,rx--,ry--,matrix,arraylist);
}
return arraylist;
}
public void addToArray(int lx,int ly ,int rx,int ry ,int[][] matrix,ArrayList<Integer> arraylist){
for(int j = ly ; j <= ry ; j++){
arraylist.add(matrix[lx][j]);
}
for(int i = lx+1 ; i <= rx ; i++){
arraylist.add(matrix[i][ry]);
}
//判断列数或者是行数确保不为1
int h = rx - lx + 1;
int w = ry - ly + 1;
if(h > 1){
for (int rj = ry-1; rj >= ly ;rj--){
arraylist.add(matrix[rx][rj]);
}
}
if(w > 1){
for(int li = rx - 1; li >=lx+1; li--){
arraylist.add(matrix[li][ly]);
}
}
}
}