【剑指offer】顺时针打印矩阵

    技术2022-07-11  144

    一、题目描述

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

    二、思路分析及代码实现

    import java.util.ArrayList; public class Solution { public ArrayList<Integer> printMatrix(int [][] matrix) { //顺时针访问数组意味着我们的顺序为:向右——向下——向左——向上——向右.... //所以我们需要先写出一次顺时针的代码,再找到循环出口条件即可 ArrayList<Integer> list=new ArrayList<>(); int row=matrix.length; if(matrix==null) return list; int col=matrix[0].length; int beginx=0; int beginy=0; int endx=col-1; int endy=row-1; while(beginx<=endx&&beginy<=endy){ //第一横行 for(int i=beginx;i<=endx;i++){ list.add(matrix[beginy][i]); } //只有一行不需要 if(endy>beginy){ for(int j=beginy+1;j<=endy;j++){ list.add(matrix[j][endx]); } } //只有一列或一行都不需要 if(beginx<endx&&beginy<endy){ for(int i=endx-1;i>=beginx;i--) list.add(matrix[endy][i]); } if(beginx<endx&&beginy<endy) for(int j=endy-1;j>beginy;j--){ list.add(matrix[j][beginx]); } beginx++; beginy++; endy--; endx--; } return list; } }
    Processed: 0.014, SQL: 9