剑指Offer对答如流系列 - 顺时针打印矩阵

栏目: IT技术 · 发布时间: 6年前

内容简介:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。每次打印都是打印外面的一圈,每次打印矩阵的起点横纵坐标都相同(横纵坐标值均设置为start),其余三个角的坐标都与start有关。对于start而言,start*2的值小于行数和列数时才需要继续打印。

文章目录

  • 面试题29:顺时针打印矩阵

面试题29:顺时针打印矩阵

一、题目描述

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。

比如:输入以下矩阵

剑指Offer对答如流系列 - 顺时针打印矩阵

打印出的数字为1 2 3 4 8 12 16 15 14 13 9 5 6 7 11 10

二、问题分析

每次打印都是打印外面的一圈,每次打印矩阵的起点横纵坐标都相同(横纵坐标值均设置为start),其余三个角的坐标都与start有关。

对于start而言,start*2的值小于行数和列数时才需要继续打印。

这样一分析,发现整个数学模型都建立起来了。

三、问题解答

public void printMatrix(int[][] matrix) {
        if(matrix==null || matrix.length<=0) {
            return;
        }
        printMatrixInCircle(matrix, 0);
    }

    private void printMatrixInCircle(int[][] matrix,int start) {
        int row=matrix.length;
        int col=matrix[0].length;
        
        int endX=col-1-start;
        int endY=row-1-start;
        
        if(endX<start || endY<start) {
            return;
        }
        
        //仅一行
        if(endY==start) {
            for(int i=start;i<=endX;i++) {
                System.out.print(matrix[start][i]+" ");
            }
            return;  //记得结束
        }
        //仅一列
        if(endX==start) {
            for(int i=start;i<=endY;i++) {
                System.out.print(matrix[i][start]+" ");
            }
            return;  //记得结束
        }

        //打印边界
        for(int i=start;i<=endX;i++) {
            System.out.print(matrix[start][i]+" ");
        }
        for(int i=start+1;i<=endY;i++) {
            System.out.print(matrix[i][endX]+" ");
        }
        for(int i=endX-1;i>=start;i--) {
            System.out.print(matrix[endY][i]+" ");
        }
        for(int i=endY-1;i>=start+1;i--) {
            System.out.print(matrix[i][start]+" ");
        }

        //继续打印更内部的矩阵,令start+1
        printMatrixInCircle(matrix, start+1);
    }

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

網絡社會之崛起

網絡社會之崛起

曼威·柯司特 / 夏鑄九、王志弘 等 / 唐山 / 2000-11 / NT$550

本書解釋了今日重塑世界的兩股強大但相互衝突的潮流:全球化與認同。資訊科技的革命以及資本主義的再結構已經引動了網絡社會,並帶來了策略,除經濟行為的全球化、工作的彈性化與不穩定,以及真實的虛擬文化。但是,伴隨著資本主義的轉化與國家主義的消亡而來的,是集體認同的表達以火力十足的方式竄起。它們挑戰了全球化中的文化單一性以及對於生活、環境的控制。曼威.柯司特在本書中描繪了社會運動的根源、目標以及效果,包括了......一起来看看 《網絡社會之崛起》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

SHA 加密
SHA 加密

SHA 加密工具