解题思路:定义一个方向数组,用栈或者直接从左上角的起点进行DFS,如果碰到下一步无法访问,调整方向,继续遍历,直到所有元素都访问了。

(这道题好有历史感,到现在还记得我读大一的时候参加院队培训的时候做的,当时还不会搜索,只会找规律,没想到找了好长时间的规律真让做对了,当时还是很兴奋。后来蓝桥杯好像也出现过一道类似的题目,那时候就没有再去找规律了,或许也是时间来不及,hhh,大一到研一,时间真的像是白驹过隙,自己也是越来越没有当初的敢打敢拼,思虑的东西也越来越多,希望自己能够拾回大一大二的那种意气风发的感觉,冲冲冲!)

 1 class Solution:
2 def dfs(self,matrix,i,j,idx):
3 self.vis[i][j]=1
4 self.ans.append(matrix[i][j])
5 for k in range(4):
6 k = (idx+k)%4
7 x = i+self.fx[k][0]
8 y = j+self.fx[k][1]
9 if 0<=x<self.n and 0<=y<self.m and not self.vis[x][y]:
10 self.dfs(matrix,x,y,k)
11 break
12 return
13 def spiralOrder(self, matrix):
14 self.fx = [[0,1],[1,0],[0,-1],[-1,0]]
15 self.vis = [[ 0 for j in range(len(matrix[i]))]for i in range(len(matrix))]
16 self.n,self.m = len(matrix),len(matrix[0])
17 self.ans = []
18 self.dfs(matrix,0,0,0)
19 return self.ans

螺旋矩阵||也是一样的解法。

 1 #没用的变量都没删
2 class Solution:
3 def dfs(self,val,i,j,idx):
4 self.vis[i][j]=1
5 self.matrix[i][j]=val
6 val+=1
7 for k in range(4):
8 k = (idx+k)%4
9 x = i+self.fx[k][0]
10 y = j+self.fx[k][1]
11 if 0<=x<self.n and 0<=y<self.m and not self.vis[x][y]:
12 self.dfs(val,x,y,k)
13 val+=1
14 break
15 return
16 def generateMatrix(self, n):
17 self.matrix = [[0 for j in range(n) ] for i in range(n)]
18 self.fx = [[0,1],[1,0],[0,-1],[-1,0]]
19 self.vis = [[ 0 for j in range(n)]for i in range(n)]
20 self.n,self.m = n,n
21 self.dfs(1,0,0,0)
22 return self.matrix

LeetCode54、59:螺旋矩阵|、||(递归,模拟)的更多相关文章

  1. 代码随想录训练营day 3|59.螺旋矩阵II 加 数组总结篇

    59.螺旋矩阵II 题目链接:59.螺旋矩阵II 题目描述:给定一个正整数 n,生成一个包含 1 到 n^2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵. 示例: 输入: 3 输出: [ [ 1 ...

  2. Java实现 LeetCode 59 螺旋矩阵 II

    59. 螺旋矩阵 II 给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵. 示例: 输入: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ...

  3. 【LeetCode】59.螺旋矩阵II

    59.螺旋矩阵II 知识点:数组: 题目描述 给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix . 示例 输入:n = 3 ...

  4. leetcode 54. 螺旋矩阵 及 59. 螺旋矩阵 II

    54. 螺旋矩阵 问题描述 给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素. 示例 1: 输入: [ [ 1, 2, 3 ], [ 4, 5, ...

  5. LeetCode 59. 螺旋矩阵 II(Spiral Matrix II)

    题目描述 给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵. 示例: 输入: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7 ...

  6. leetcode刷题-59螺旋矩阵2

    题目 给定一个正整数 n,生成一个包含 1 到 n^2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵. 思路 与螺旋矩阵题完全一致 实现 class Solution: def generateM ...

  7. 代码随想录第二天| 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II

    2022/09/22 第二天 第一题 这题我就直接平方后排序了,很无脑但很快乐啊(官方题解是双指针 第二题 滑动窗口的问题,本来我也是直接暴力求解发现在leetCode上超时,看了官方题解,也是第一次 ...

  8. lc.59 螺旋矩阵 II

    题目描述 给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix . 示例 输入:n = 3 输出:[[1,2,3],[8,9, ...

  9. [Leetcode]59.螺旋矩阵Ⅱ

    给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵. 示例: 输入: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, ...

  10. 59. 螺旋矩阵 II

    给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵. 示例: 输入: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, ...

随机推荐

  1. QA|requests接口请求失败而postman请求成功原因排查|Requests

    requests接口请求失败而postman请求成功原因 代码如下 1 def ihrm_login(login_data, url1): 2 """login_data ...

  2. 音频格式轻松转 - foobar2000

    一.foobar2000简介 foobar2000 是一款免费的专业级别音频解码播放器,支持的诸多音频格式,可加载附加组件扩展更多支持. 除了解码以外,可轻松实现对音频格式的转换,支持几乎所有主流格式 ...

  3. Node练习 | 文件管理模块使用

    功能 新建一个Project文件夹, 里面是三个新建的文件, 分别是app.js/app.css/index.html 实现步骤 fs模块中的同步和非同步 同步 等待运行完成后再运行下一步 本次练习为 ...

  4. ASP.NET 6启动时自动创建MongoDB索引

    大家好,我是Edison. 最近,在使用MongoDB时,碰到这样的一个需求:针对某个Collection手动在开发环境创建了索引,但在测试环境和生产环境不想再手动操作了,于是就想着通过代码的方式在A ...

  5. Django-rest-framework框架——请求与响应、视图组件

    目录 一 请求与响应 1.1 Request 1.1.1.1 常用属性 1).data 2).query_params 1.2 Response 1.1.2.1 构造方式 1.1.2.2 常用属性 1 ...

  6. Ubuntu更新软件的命令

    更新软件源 apt-get update 更新升级所有软件 apt-get upgrade 更新某个软件 apt-get upgrade 名 列出可更新的软件 apt list --upgradabl ...

  7. Merge-Lrc 合并歌词的小工具

    Merge-Lrc 背景 音乐区有群友希望各种乱七八糟的歌词(lrc 格式居多,里面甚至还有翻译)可以整理成单一的文件,或者一个仅翻译的歌词可以和原文的歌词合并.于是就开发了这款工具.地址:https ...

  8. Zuul 2.1.5 设计分析

    前言 https://github.com/Netflix/zuul zuul 是 SpringCloud 家族老兵,使用 Java 微服务大部分都在使用 zuul 作为网关.既然他如此重要,那么我们 ...

  9. 多线程指南:探究多线程在Node.js中的广泛应用

    前言 最初,JavaScript是用于设计执行简单的web任务的,比如表单验证.直到2009年,Node.js的创建者Ryan Dahl让开发人员认识到了通过JavaScript 进行后端开发已成为可 ...

  10. Unity 在Preferences或Project Setting窗口创建自定义配置

    官方文档链接 https://docs.unity3d.com/2020.3/Documentation/ScriptReference/SettingsProvider.html 一直不习惯使用Un ...