题解 | #螺旋矩阵#

螺旋矩阵

https://www.nowcoder.com/practice/7edf70f2d29c4b599693dc3aaeea1d31

class Solution {
public:
    vector<int> spiralOrder(vector<vector<int> > &matrix) {
        vector<int> res;
        if(matrix.size() == 0)
            return res;
        int m = matrix.size();
        int n = matrix[0].size();
        int start_x = 0;
        int start_y = 0;
        int loop = max(m/2,n/2);
        int offset = 1;
        while(loop--)
        {
            int i = start_x,j = start_y;
            for(;j< n - offset && res.size() < m*n;++j)
                res.push_back(matrix[i][j]);
            for(;i < m - offset && res.size() < m*n;++i)
                res.push_back(matrix[i][j]);
            for(;j>start_y && res.size() < m*n;--j)
                res.push_back(matrix[i][j]);
            for(;i>start_x && res.size() < m*n;--i)
                res.push_back(matrix[i][j]);
            if(res.size() == m*n)
                break;
            offset++;
            start_x++;
            start_y++;
        }
        if( m == n && m % 2 == 1)
            res.push_back(matrix[m/2][n/2]);
        return res;
    }
};

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务