题解 | #螺旋矩阵#

螺旋矩阵

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

class Solution {
public:
vector<int> spiralOrder(vector<vector<int> > &matrix) {
    vector<int>ret;
    if (matrix.empty())return ret;
    int m = matrix.size();
    int n = matrix[0].size();
    if (m == 1 && n == 1)return { 1 };
    int top = 0, down = m - 1, l = 0, r = n - 1;
    int i = 0, k = 0, j = 0;
    if (m == 0)return ret;
    while (i < m*n) {
        k = l;
        while (i < m*n&&k <=r) {
            ret.push_back(matrix[top][k]);
            k++;
            i++;
        }
        top++;
        j = top;
        while (i < m*n&&j <= down) {
            ret.push_back(matrix[j][r]);
            j++;
            i++;
        }
        r--;
        k = r;
        while (i < m*n&&k >=l) {
            ret.push_back(matrix[down][k]);
            k--;
            i++;
        }
        down--;
        j = down;
        while (i < m*n&&j >= top) {
            ret.push_back(matrix[j][l]);
            j--;
            i++;
        }
        l++;
    }
    return ret;
}
};

其实可以通过设置游标k,j,通过限制上下左右来进行遍历即可

全部评论

相关推荐

01-30 22:03
门头沟学院 Java
用微笑面对困难:我滴妈,【俩月】【实习】【主管】仨debuff吃满了,独立设计开发的项目写了绝大占比的运营板块,你独立开发,那维护、问题复盘、日志更新、bug、策划书全是自己整的? 不建议写那么大,可以从小出发更容易
点赞 评论 收藏
分享
迷茫的大四🐶:都让开,我tm来啦
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务