花式输出二维数组---回形输出

描述

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

列子

例如,如果输入如下矩阵:

 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.

public static ArrayList<Integer> printMatrix(int [][] matrix) {
    ArrayList<Integer> result = new ArrayList<>();
    int row = matrix.length;
    int col = matrix[0].length;
    int flag = 0;
    int temp = row * col;
    while (true) {


        //上边
        for(int i = flag; i < col - flag; i++){
            result.add(new Integer(matrix[flag][i]));
            temp--;
            if(temp==0) return result;
        }

        //右边
        for (int i = flag + 1; i < row - flag; i++){
            result.add(new Integer(matrix[i][col - flag - 1]));
            temp--;
            if(temp==0) return result;
        }

        //下边
        for (int i = col - 2 - flag; i > flag - 1; i--){
            result.add(new Integer(matrix[row - flag - 1][i]));
            temp--;
            if(temp==0) return result;
        }

        //左边
        for (int i = row - 2 - flag; i > flag ; i--){
            result.add(new Integer(matrix[i][flag]));
            temp--;
            if(temp==0) return result;
        }

        flag++;
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 说明: 本文中出现的所有算法题皆来自牛客网-剑指Offer在线编程题,在此只是作为转载和记录,用于本人学习使用,不...
    秋意思寒阅读 4,840评论 1 1
  • 剑指 offer 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成...
    faremax阅读 6,621评论 0 7
  • 本文章转载于搜狗测试 1、.junit需要注意什么?什么时候用before什么时候用beforeClass Bef...
    夜境阅读 1,768评论 0 0
  • 剑指offer 最近在牛客网上刷剑指offer的题目,现将题目和答案(均测试通过)总结如下: 二维数组的查找 替换...
    闫阿佳阅读 4,505评论 0 10
  • 记得高三那时候整天在看小说,大都是些是长篇,偶尔夹杂些杂文和青年文摘类的东西,当时喜欢文字这玩意喜欢的不行,简直是...
    岛主王仙客阅读 10,291评论 17 15