剑指offer系列——19.顺时针打印矩阵

Posted xym4869

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指offer系列——19.顺时针打印矩阵相关的知识,希望对你有一定的参考价值。

Q:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 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.
A:

    vector<int> printMatrix(vector<vector<int> > matrix) {
        int size1 = matrix[0].size(); //列数
        int size2 = matrix.size(); //行数
        int left = 0, top = 0;
        int right = size1 - 1, down = size2 - 1;
        vector<int> array;
        if(matrix.empty())
            return array;
        while (true) {
            for (int i = left; i <= right; i++)
                array.push_back(matrix[top][i]);
            if (++top > down)
                break;
            for (int j = top; j <= down; j++)
                array.push_back(matrix[j][right]);
            if (--right < left)
                break;
            for (int m = right; m >= left; m--)
                array.push_back(matrix[down][m]);
            if (--down < top)
                break;
            for (int n = down; n >= top; n--)
                array.push_back(matrix[n][left]);
            if (++left > right)
                break;
        }
        return array;
    }

P.S.这个题就是如何按顺序把矩阵输出出来。

以上是关于剑指offer系列——19.顺时针打印矩阵的主要内容,如果未能解决你的问题,请参考以下文章

剑指offer(19)顺时针打印矩阵

顺时针打印矩阵(剑指offer-19)

剑指offer19 顺时针打印矩阵

[剑指offer] 19. 顺时针打印矩阵

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

剑指offer---19--***-顺时针打印矩阵