题目描述
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字
1 import java.util.ArrayList; 2 public class Solution { 3 ArrayList<Integer> list = new ArrayList<Integer>(); 4 public ArrayList<Integer> printMatrix(int [][] matrix) { 5 int rows = matrix.length; 6 int cols = matrix[0].length; 7 int start = 0; 8 while(cols>start*2&&rows>start*2){ 9 Cicle(matrix,cols,rows,start); 10 start++; 11 } 12 return list; 13 } 14 private void Cicle(int [][] matrix, int rows, int cols,int start){ 15 int endx = rows-start-1; 16 int endy = cols-start-1; 17 for(int i = start;i<=endx;i++) 18 list.add(matrix[start][i]); 19 for(int i = start+1;i<=endy;i++) 20 list.add(matrix[i][endx]); 21 if(start<endx && start<endy){ 22 for(int i = endx-1;i>=start;i--) 23 list.add(matrix[endy][i]); 24 } 25 if(start<endx && start<endy){ 26 for(int i = endy-1;i>=start+1;i--) 27 list.add(matrix[i][start]); 28 } 29 } 30 31 }