美文网首页
面试题29:顺时针打印矩阵

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

作者: scott_alpha | 来源:发表于2019-10-07 16:49 被阅读0次

题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每个数字。
思路:先分析每一圈的起点,我们发现左上角的x和y是一样的,并且依次递增;接着分析每一圈怎么画出来,先画从左到右,接着从上到下,接着从右到左,最后从下到上。
解决方案:

public class Question29 {
    public static void printMatrixInCircle(int[][] numbers, int colums, int rows, int start){
        int endX = colums -1 -start;
        int endY = rows -1 -start;
        // 从左到右打印一行
        for (int i=start; i<=endX; i++){
            int number = numbers[i][start];
            System.out.println(number);
        }
        // 从上到下打印一列
        if (start < endY){
            for (int i=start+1; i<=endY; i++){
                int number = numbers[endX][i];
                System.out.println(number);
            }
        }
        // 从右到左打印一行
        if (start < endX && start < endY){
            for (int i=endX-1; i>=start; i--){
                int number = numbers[i][endY];
                System.out.println(number);
            }
        }

        // 从下到上打印一列
        if (start < endY-1 && start < endX){
            for (int i=endY-1; i>=start+1; i--){
                int number = numbers[start][i];
                System.out.println(number);
            }
        }
    }
    public static void printMatrixClockwisely(int[][] numbers, int columns, int rows){
        if (numbers == null || columns < 0 || rows < 0) return;
        int start = 0;
        while (columns > start * 2 && rows > start * 2){
            printMatrixInCircle(numbers, columns, rows, start);
            ++ start;
        }
    }

    public static void main(String[] args) {
        int[][] numbers= new int[][]{
                {1,3,5,7,9},{2,4,6,8,10}
        };
        System.out.println("test " + numbers[1][0]);
        printMatrixClockwisely(numbers, numbers.length, numbers[0].length);
    }
}

相关文章

  • 剑指offer第二版-29.顺时针打印矩阵

    本系列导航:剑指offer(第二版)java实现导航帖 面试题29:顺时针打印矩阵 题目要求:输入一个矩阵,按照从...

  • 剑指 Offer 29. 顺时针打印矩阵

    剑指 Offer 29. 顺时针打印矩阵[https://leetcode-cn.com/problems/shu...

  • 剑指 Offer 29. 顺时针打印矩阵

    剑指 Offer 29. 顺时针打印矩阵[https://leetcode-cn.com/problems/shu...

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

    输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字 思路:定义上下左右四个变量,初始边界值,定义外层循环...

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

    题目 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每个数字。如下所示矩阵: 则依次打印输出数字:1,2,3,...

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

    题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每个数字。思路:先分析每一圈的起点,我们发现左上角的x和y...

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

    题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2...

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

    题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字 思路 应当分为上下左右四步,并且设置一个boo...

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

    题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3...

  • 29、顺时针打印矩阵

    题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3...

网友评论

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

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