美文网首页
Leetcode54:螺旋矩阵

Leetcode54:螺旋矩阵

作者: VIELAMI | 来源:发表于2020-05-10 17:35 被阅读0次

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


image.png

【思路】
确定一个前进方向,如果碰到矩阵边界,或者已经搜索的的位置则顺时针变换方向。

  • 需要另建一个矩阵去记录走过的位置
  • 如何实现顺时针旋转?
    建立一个方向的向量 四个方向 依次往下 详见代码
  • 代码用while 何时推出循环?
    当换了个方向仍是搜索过的时候 就退出

【坑】
考虑特殊情况 只有一个数字的矩阵,唯一的位置是(0,0)

vector<int> spiralOrder(vector<vector<int>>& matrix) {
    vector<vector<int>> record(matrix.size(), vector<int>(matrix[0].size(), 0));
    vector<int> res;
    int i = 0;
    int j = 0;
    vector<int> dirJ = { 1,0,-1,0 };
    vector<int> dirI = { 0,1,0,-1 };
    int dir = 0;
    int flagI = dirI[dir];
    int flagJ = dirJ[dir];
    while (true) {
        if (j<0 || j>= matrix[0].size() || i<0 || i>= matrix.size() || record[i][j] == 1) { //顺时针旋转方向
            i = i - dirI[dir];
            j = j - dirJ[dir];
            dir = (dir + 1) % 4;
            i = i + dirI[dir];
            j = j + dirJ[dir];
            //这个判断条件也要判断是否出界,只有0,0的特殊情况
            if (j < 0 || j >= matrix[0].size() || i < 0 || i >= matrix.size() || record[i][j] == 1) break;
            continue;
        }
        res.push_back(matrix[i][j]);
        record[i][j] = 1;
        i = i + dirI[dir];
        j = j + dirJ[dir];
    }
    for (int i = 0; i < res.size(); i++) {
        cout << res[i] << " ";
    }
    return res;

}

相关文章

  • Leetcode54螺旋矩阵

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

  • Leetcode54:螺旋矩阵

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

  • LeetCode54: 螺旋矩阵

    给定一个包含 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.分析 上图展示了一轮完整的顺时针螺旋遍历的过程,整个过程可以分为如图所示的四个...

网友评论

      本文标题:Leetcode54:螺旋矩阵

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