首页 > 其他分享 >54. 螺旋矩阵

54. 螺旋矩阵

时间:2022-08-19 21:47:11浏览次数:76  
标签:matrix tx ty int 54 螺旋 矩阵 ret vector

54. 螺旋矩阵

给你一个 mn 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。

 

示例 1:

输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出:[1,2,3,6,9,8,7,4,5]

示例 2:

输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
输出:[1,2,3,4,8,12,11,10,9,5,6,7]

 

提示:

  • m == matrix.length
  • n == matrix[i].length
  • 1 <= m, n <= 10
  • -100 <= matrix[i][j] <= 100

 

 

解析:

先向右走,只要没有走到边界就不改变方向,之后遍历四个方向看看哪个能走即可

走过的路标记为一个不可访问的数

class Solution {
public:
    int dir[4][2] = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}};
    int n, m;
    void dfs(vector<int>& ret, vector<vector<int> >& matrix, int k, int x, int y)
    {
        ret.push_back(matrix[x][y]);
        matrix[x][y] = -101;

        int tx = x + dir[k][0];
        int ty = y + dir[k][1];
        if(tx >= n || tx < 0 || ty >= m || ty < 0 || matrix[tx][ty] < -100)
        {
            int temp = k;
            for(int i = 0; i < 4; i++)
            {
                tx = x + dir[i][0];
                ty = y + dir[i][1];
                if(tx >= n || tx < 0 || ty >= m || ty < 0 || matrix[tx][ty] < -100) continue;
                k = i;
                break;
            }
            if(k != temp)
                dfs(ret, matrix, k, tx, ty);

        }
        else
        {

            dfs(ret, matrix, k, tx, ty);
        }
    }


    vector<int> spiralOrder(vector<vector<int>>& matrix) {
        vector<int> ret;
        n = matrix.size();
        m = matrix[0].size();
        dfs(ret, matrix, 3, 0, 0);
        return ret;
    }
};

 

标签:matrix,tx,ty,int,54,螺旋,矩阵,ret,vector
From: https://www.cnblogs.com/WTSRUVF/p/16603385.html

相关文章

  • 「atcoder - agc054c」Roughly Sorted
    link。高妙题,我只会到构造下界那一步……构造下界比较容易,只需要注意到交换一次最多让序列向合法迫近一步即可。则答案下界为\(\sum_i\max\{\left(\sum_{j<i}[p'_j......
  • leetcode 304. Range Sum Query 2D - Immutable 二维区域和检索 - 矩阵不可变(中等)
    一、题目大意https://leetcode.cn/problems/range-sum-query-2d-immutable给定一个二维矩阵matrix,以下类型的多个请求:计算其子矩形范围内元素的总和,该子矩阵的左上角......
  • 代数余子式和伴随矩阵
    代数余子式给定\(n\)阶方阵\(A=(a_{ij})\),定义\(a_{ij}\)的余子式\(M_{ij}\)为\(A\)划去第\(i\)行第\(j\)列后的行列式,\(a_{ij}\)的代数余子式\(A_{ij}=(......
  • LMG3422R050RQZR电源管理LMG3425R050RQZR引脚图 54-VQFN
    产品概述LMG342xR050600V50mΩGaNFET具有集成驱动器和保护功能,让设计人员能够在电动电子系统中实现更高功率密度和效率。LMG342xR050集成了一个硅驱动器,可实现高达150V......
  • [LeetCode] 1314. Matrix Block Sum 矩阵区域和
    Givena mxn matrix mat andaninteger k,return amatrix answer whereeach answer[i][j] isthesumofallelements mat[r][c] for:i-k<=r<=......
  • LeetCode 螺旋矩阵 II 算法题解 All In One
    LeetCode螺旋矩阵II算法题解AllInOnejs/ts生成螺旋矩阵螺旋矩阵原理图解动态赋值arr[i]//动态更新indexleti=0;while(left<=right&&t......
  • 混淆矩阵与模型评估
    1.混淆矩阵通常对于二分类模型,我们的预测结果与实际情况两两组合,会得到4种结果。这4中结果组成了混淆矩阵。以0,1作为两种类别。如下:用P(Positive)、N(Negative......
  • C++primer练习13.49-54
    练习13.49为你的String类添加一个移动构造函数和一个移动赋值运算符String(String&&a):elements(std::move(a.elements)),first_free(std::move(a.first_free)),cap(st......
  • 相似矩阵
    定义A~B,即存在可逆矩阵P,使得P^(-1)AP=B 性质1、传递性,A~B,B~C,则A~C2、对称性,若A~B<=>B~A3、反身性,A~A 若A~B则...1、特征多项式相同,即|lamdaE-A|=|lamdaE-B|,AB......
  • 归档:220813 | 社恐铁锹的第一次新知讲授:矩阵快速幂
    铁锹:呃,其实我的名字是英文缩写,不是铁锹,你们不要再给我乱起外号了什么是矩阵?一个\(n\timesm\)的矩阵是由数组成的\(n\)行\(m\)列的方阵。什么是矩阵乘法?假设有......