剑指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.
 
代码实现(Java)
 1 import java.util.ArrayList;
 2 public class Solution {
 3     public ArrayList<Integer> printMatrix(int [][] matrix) {
 4        if(matrix==null){
 5            return null;
 6        }
 7        int start=0;
 8        ArrayList<Integer> list=new ArrayList<Integer>();
 9        while(matrix[0].length>2*start && matrix.length>2*start){
10             int columns=matrix[0].length;
11             int rows=matrix.length;
12             int endx=columns-1-start;
13             int endy=rows-1-start;
14             //从左到右打印一行
15             for(int i=start;i<=endx;i++){
16                 list.add(matrix[start][i]);
17             }
18             //从上到下打印一列
19             if(start<endy){
20                 for(int i=start+1;i<=endy;i++){
21                      list.add(matrix[i][endx]);
22                 }
23             }
24             //从右到左打印一行
25             if(start<endx && start<endy){
26                 for(int i=endx-1;i>=start;i--){
27                     list.add(matrix[endy][i]);
28                 }
29             }
30             //从下到上打印一列
31             if(start<endx && start<endy-1){
32                 for(int i=endy-1;i>start;i--){
33                     list.add(matrix[i][start]);
34                 }
35             }
36             start++;
37        }
38        return list;
39     }
40 }

 

posted on 2019-10-29 23:39  Joyce&wang  阅读(174)  评论(0)    收藏  举报

导航