美文网首页《剑指offer》Java实现
《剑指Offer》Java实现--顺时针打印矩阵

《剑指Offer》Java实现--顺时针打印矩阵

作者: 南湖Giser | 来源:发表于2018-10-12 16:10 被阅读14次

    题目描述

        输入一个矩阵,按照从外向里顺时针的顺序打印出每一个数字。测试用例如下图:


    测试数组

    思路分析

        这道题目并不难,关键在于边界控制!每一层遍历均从左上角开始,逐层往里完成遍历。

    Java代码实现

    /**
     * 由外向内顺时针打印矩阵数组
     * @author Administrator
     * @version 2018/10/12
     */
    public class Exe31_PrintMatrixClockWisely {
    
        public static void main(String[] args) {
            int[][] matrix={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16},{21,22,23,24}};
            printMatrixClockWisely(matrix);
        }
        
        public static void printMatrixClockWisely(int[][] matrix) {
            //参数合法性检查
            if(matrix==null||matrix.length!=matrix[0].length){
                throw new IllegalArgumentException();
            }else {
                int dimension=matrix.length;
                int rowStart=0;
                int colStart=0;
                //分解工作,一圈一圈的打印
                while(dimension>rowStart*2&&dimension>colStart*2){
                    printCircle(matrix, rowStart, colStart);
                    rowStart++;
                    colStart++;
                }
            }
        }
        
        private static void printCircle(int[][] matrix,int rowStart,int colStart) {
            int dimension=matrix.length;
            //从左向右打印
            for(int i=colStart;i<dimension-colStart;i++){
                System.out.print(matrix[rowStart][i]+" ");
            }
            //从上往下打印
            for(int i=rowStart+1;i<dimension-rowStart;i++){
                System.out.print(matrix[i][dimension-rowStart-1]+" ");
            }
            //从右往左打印
            for(int i=dimension-colStart-2;i>colStart-1;i--){
                System.out.print(matrix[dimension-rowStart-1][i]+" ");
            }
            //从下往上打印
            for(int i=dimension-rowStart-2;i>rowStart;i--){
                System.out.print(matrix[i][colStart]+" ");
            }
            System.out.println();
        }
    
    }
    

    相关文章

      网友评论

        本文标题:《剑指Offer》Java实现--顺时针打印矩阵

        本文链接:https://www.haomeiwen.com/subject/fgmwaftx.html