顺时针打印矩阵

 1 import java.util.ArrayList;
 2 public class Solution {
 3     public ArrayList<Integer> printMatrix(int [][] matrix) {
 4     ArrayList<Integer> ai = new ArrayList<Integer>();
 5          int rows = matrix.length;//矩阵的行 数
 6          if(rows == 0) 
 7              return ai;
 8          int cols = matrix[0].length;//矩阵的列数
 9          if(cols == 0) 
10              return ai;
11          //层数是以最短边的对角线为基准的,比如(0,0),(1,1)...,只取一半。
12          //之所以-1和+1当对角线元素个数为基数时候,会出现个0.5层,需要进为1
13          int layers = (Math.min(rows,cols)-1)/2+1;//这个是层数
14          for(int i = 0; i < layers; i++){
15              //从左到右打印
16              for(int j=i; j<cols-i; j++) ai.add(matrix[i][j]); 
17              //从右上到右下打印
18              for(int k=i+1;k<rows-i; k++) ai.add(matrix[k][cols-i-1]);
19              //从右下到左下打印
20              for(int m=cols-i-2;(m>=i)&&(rows-i-1!=i);m--) ai.add(matrix[rows-i-1][m]);
21              //从左下到左上打印
22              for(int w=rows-i-2;(w>i)&&(cols-i-1!=i);w--) ai.add(matrix[w][i]);
23          }
24         return ai;
25     }
26 }

 

posted @ 2017-03-09 10:54  fankongkong  阅读(168)  评论(0编辑  收藏  举报