Spiral Matrix

来源:互联网 发布:f18ef超级大黄蜂数据 编辑:程序博客网 时间:2024/05/17 04:43
class Solution {public:    vector<int> spiralOrder(vector<vector<int> > &matrix) {        vector<int> res;        if (matrix.size()==0) return res;        int sx=0, sy=0, ex=matrix[0].size()-1, ey=matrix.size()-1;        while (true) {            for (int i=sx; i<=ex; i++) {                res.push_back(matrix[sy][i]);            }            if (++sy>ey) break;            for (int i=sy; i<=ey; i++) {                res.push_back(matrix[i][ex]);            }            if (--ex<sx) break;            for (int i=ex; i>=sx; i--) {                res.push_back(matrix[ey][i]);            }            if (--ey<sy) break;            for (int i=ey; i>=sy; i--) {                res.push_back(matrix[i][sx]);            }            if (++sx>ex) break;        }        return res;    }};
II:
class Solution {public:    vector<vector<int> > generateMatrix(int n) {        vector<int> t(n,0);        vector<vector<int> > res(n,t);        int sx=0, ex=n-1, sy=0, ey=n-1;        int m=1;        while (1) {            for (int i=sx; i<=ex; i++) {                res[sy][i]=m;                m++;            }            if (++sy>ey) break;            for (int i=sy; i<=ey; i++) {                res[i][ex]=m;                m++;            }            if (--ex<sx) break;            for (int i=ex; i>=sx; i--) {                res[ey][i]=m;                m++;            }            if (--ey<ex) break;            for (int i=ey; i>=sy; i--) {                res[i][sx]=m;                m++;            }            if (++sx>sy) break;        }        return res;    }};


0 0
原创粉丝点击