【剑指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.

 

【AC代码】

 1 import java.util.ArrayList;
 2 public class Solution {
 3     public ArrayList<Integer> printMatrix(int [][] matrix) {
 4        ArrayList<Integer> list = new ArrayList<>();
 5        int row = matrix.length, column = matrix[0].length;
 6        if (row == 0 || column == 0) return null;
 7        int up = 0, down = row-1, left = 0, right = column-1;
 8        while (true) {
 9            for (int c = left; c <= right; c++) {
10                list.add(matrix[up][c]);
11            }
12            
13            up++;
14            if (up > down) break;
15            for (int r = up; r <= down; r++) {
16                list.add(matrix[r][right]);
17            }
18            
19            right--;
20            if (right < left) break;
21            for (int c = right; c >= left; c--) {
22                list.add(matrix[down][c]);
23            }
24            
25            down--;
26            if (down < up) break;
27            for (int r = down; r >= up; r--) {
28                list.add(matrix[r][left]);
29            }
30            
31            left++;
32            if (left > right) break;
33        }
34         return list;
35     }
36 }
View Code

 

posted @ 2019-10-15 17:46  ___Moongazer  阅读(116)  评论(0)    收藏  举报