题解 | #螺旋矩阵#

螺旋矩阵

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,通过限制上下左右来进行遍历即可

全部评论

相关推荐

06-20 15:23
门头沟学院 Java
难道你们背八股都不觉得累?现在每天背八股背的我想吐
想去大厂的土豆子:累不累都是对比出来的,八股可比高考、考研轻松多了
点赞 评论 收藏
分享
04-29 22:35
门头沟学院 Java
牛友说改了名字能收到offer:旧图新发查看图片
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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