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

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

作者: 繁星追逐 | 来源:发表于2019-11-08 17:32 被阅读0次
  • 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字

思路:定义上下左右四个变量,初始边界值,定义外层循环,如果left没有超过right,top没有超过bottem;循环继续,每次向内进一层。
循环内分为几种情况,只有一行,即满足左边不大于右边,从左到右输出,超过两行的,即top小于bottem,可以按照列由上到下,两行两列的,又需要在每行从右到左,超过两行的即需要每列从下向上,最后输出都放入集合list
代码如下:

public ArrayList<Integer> printMatrix(int [][] matrix) {
         if (matrix == null || matrix.length <= 0){
             return null;
         }
         //定义四个变量,作为边界,后面变换
         int left = 0;
         int right = matrix[0].length - 1;
         int top = 0;
         int bottem = matrix.length - 1;
        ArrayList<Integer> list = new ArrayList<>();
        while (left <= right && top <= bottem){
            // 从左向右打印第一行
            for (int col = left;col <= right;col++) {
                list.add(matrix[top][col]);
            }
            //如果至少有两行,则自上而下打印边上的列
            if (top < bottem){
                for (int row = top+1;row <= bottem;row++){
                    list.add(matrix[row][right]);
                }
            }
            //如果至少有两行两列,则自下而上打印最左边一行
            if (left < right && top < bottem){
               for (int col = right-1;col >= left;col--){
                list.add(matrix[bottem][col]);
               }
            }
            //若至少有三行两列,则从左向右打印第二行
            if (left < right && top < bottem-1){
                //循环及时停止,不能包括起始行
                for (int row = bottem - 1;row > top;row--){
                    list.add(matrix[row][left]);
                }
            }
            //缩小一圈
            left++;
            right--;
            top++;
            bottem--;

        }
        return list;
    }

相关文章

  • 剑指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/dbssyctx.html