美文网首页LeeCode题目笔记
2019-08-19 螺旋矩阵

2019-08-19 螺旋矩阵

作者: Antrn | 来源:发表于2019-08-19 22:37 被阅读0次

给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。

示例 1:

输入:

[
 [ 1, 2, 3 ],
 [ 4, 5, 6 ],
 [ 7, 8, 9 ]
]

输出:

[1,2,3,6,9,8,7,4,5]

示例 2:

输入:

[
  [1, 2, 3, 4],
  [5, 6, 7, 8],
  [9,10,11,12]
]

输出:

[1,2,3,4,8,12,11,10,9,5,6,7]
C++
class Solution {
public:
    vector<int> spiralOrder(vector<vector<int>>& matrix) {
        if(matrix.empty() || matrix[0].empty()) return {};
        int x = matrix.size();
        int y = matrix[0].size();
        
        vector<int> res(x*y);
        vector<vector<int>> m(x, vector<int>(y, 0));
        vector<vector<int>> dirs{{0,1}, {1,0}, {0,-1}, {-1,0}};
        int r=0,c=0,k=0;
        for(int i=0;i<x*y;i++){
            res[i] = matrix[r][c];
            m[r][c] = 1;
            r+=dirs[k][0];
            c+=dirs[k][1];
            if(k == 0&&(c>=y || m[r][c] == 1)){
                c -= 1;
                r += 1;
                k = (k+1)%4;
            }
            if(k == 1&& (r>=x || m[r][c] == 1)){
                r -= 1;
                c -= 1;
                k = (k+1)%4;
            }
            if(k == 2&&(c<0 || m[r][c] == 1)){
                c += 1;
                r -= 1;
                k = (k+1)%4;
            }
            if(k == 3&&(r<0 || m[r][c] == 1)){
                r += 1;
                c += 1;
                k = (k+1)%4;
            }
            
        }
        return res;
    }
};

相关文章

  • 2019-08-19 螺旋矩阵

    给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。 示例 1...

  • Python实现螺旋矩阵

    螺旋矩阵 什么是螺旋矩阵? 螺旋矩阵是指一个呈螺旋状的矩阵,它的数字由第一行开始到右边不断变大,向下变大,向左变大...

  • 螺旋矩阵

    螺旋矩阵 1.想法: 对于矩阵的螺旋我们可以规约为4个方向 2.代码:

  • 螺旋矩阵

    递归 非递归

  • 螺旋矩阵

    给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。 示例 1...

  • 螺旋矩阵

    题目描述:给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。...

  • 螺旋矩阵

    给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。 示例 1...

  • 螺旋矩阵

    原文地址,我的个人博 1.题目 2.分析 上图展示了一轮完整的顺时针螺旋遍历的过程,整个过程可以分为如图所示的四个...

  • 螺旋矩阵

    写在前面 2019年,年初到蚂蚁金服面试测试工程师的职位,现场有一道笔试题是求螺旋矩阵,当时大概和面试官说了一下思...

  • 螺旋矩阵

    题目信息 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 示例 ...

网友评论

    本文标题:2019-08-19 螺旋矩阵

    本文链接:https://www.haomeiwen.com/subject/hrsysctx.html