顺时针打印矩阵

来源:互联网 发布:软件注册授权系统 编辑:程序博客网 时间:2024/05/18 14:46
class Solution {public:    vector<int> printMatrix(vector<vector<int> > matrix) {        int direction[4][2] = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};        int m = matrix.size();        int n = matrix[0].size();        vector<int> result;        vector<vector<bool> > tag;        for (int i = 0; i < m; i++)        {            vector<bool> v(n, false);            tag.push_back(v);        }        int k = 0; // 用于控制方向        int x = 0, y = 0; // 坐标        int i = 0;        while (i < m*n)        {            result.push_back(matrix[x][y]);            tag[x][y] = true;            i++;            if (x+direction[k][0] >= 0 && x+direction[k][0] < m && y+direction[k][1] >= 0 &&                y+direction[k][1] < n && !tag[x+direction[k][0]][y+direction[k][1]])            {                x = x+direction[k][0];                y = y+direction[k][1];            }            else            {                k++;                k %= 4;                x = x+direction[k][0];                y = y+direction[k][1];            }        }        return result;    }};