[剑指Offer][数组]顺时针打印矩阵
题目描述
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。例如,如果输入如下4 X 4矩阵: 1、2、3、4、5、6、7、8、9、10、11、12、13、14、15、16,则依次打印出数字1、2、3、4、8、12、16、15、14、13、9、5、6、7、11、10。
1 public class Solution { 2 public ArrayList<Integer> printMatrix(int [][] matrix) { 3 ArrayList<Integer> list = new ArrayList<>(); 4 if(matrix == null || matrix.length == 0 || matrix[0].length == 0){ 5 return list; 6 } 7 int up = 0; 8 int down = matrix.length-1; 9 int left = 0; 10 int right = matrix[0].length-1; 11 while(true){ 12 for(int col=left;col<=right;col++){ 13 list.add(matrix[up][col]); 14 } 15 up++; 16 if(up > down){ 17 break; 18 } 19 for(int row=up;row<=down;row++){ 20 list.add(matrix[row][right]); 21 } 22 right--; 23 if(left > right){ 24 break; 25 } 26 for(int col=right;col>=left;col--){ 27 list.add(matrix[down][col]); 28 } 29 down--; 30 if(up > down){ 31 break; 32 } 33 for(int row=down;row>=up;row--){ 34 list.add(matrix[row][left]); 35 } 36 left++; 37 if(left > right){ 38 break; 39 } 40 } 41 return list; 42 } 43 }

浙公网安备 33010602011771号