19顺时针打印矩阵

题目描述

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 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 }

 

posted @ 2017-11-22 09:33  乐乐章  阅读(174)  评论(0编辑  收藏  举报