顺时针打印矩阵

2018-10-09  本文已影响0人  twilight_mao

题目描述

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下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.确定圈数
2.如何处理重复打印的

代码

import java.util.ArrayList;
public class Solution {
    public ArrayList<Integer> printMatrix(int [][] matrix) {
       int row=matrix.length;
        int column=matrix[0].length;
        int n=row;
        if(row>column){
            n=column;
        }
        int cicle= (int) Math.ceil(n/2.0);
        ArrayList<Integer> list=new ArrayList<>();
        for(int p=1;p<=cicle;p++){
            //从左向右
            for(int i=p-1;i<=column-p;i++){
                list.add(matrix[p-1][i]);
            }
            if(row-2*p+1==0){
                break;
            }
            //从上向下
            for(int j=p;j<=row-p;j++){
                list.add(matrix[j][column-p]);
            }
            if(column-2*p+1==0){
                break;
            }
            //从右向左
            for(int k=column-p-1;k>=p-1;k--){
                list.add(matrix[row-p][k]);
            }
            //从下向上
            for(int m=row-p-1;m>=p;m--){
                list.add(matrix[m][p-1]);
            }
        }
        return list;
    }
}
上一篇下一篇

猜你喜欢

热点阅读