解题思路:定义一个方向数组,用栈或者直接从左上角的起点进行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. ATtiny88初体验(五):ADC

    ATtiny88初体验(五):ADC ADC模块介绍 ATtiny88单片机包含一个10bit分辨率的ADC模块,拥有8个通道,最大采样率15kSPS,转换时间14us.ATtiny88的ADC参考电 ...

  2. 多层前馈神经网络及BP算法

    一.多层前馈神经网络 首先说下多层前馈神经网络,BP算法,BP神经网络之间的关系.多层前馈[multilayer feed-forward]神经网络由一个输入层.一个或多个隐藏层和一个输出层组成,后向 ...

  3. Windows安装、配置、卸载MySQL教程

    MySQL是一个关系型数据库管理系统,目前为Oracle旗下产品,它具有开源.体积小.速度快的优点,许多网站使用的都是MySQL数据库. 简单而言,MySQL数据库核心功能就是用来存储数据的. MyS ...

  4. 一文搞懂 OTP 双因素认证

    GitHub 在 2023 年 3 月推出了双因素认证(two-factor authentication)简称 2FA,并且承诺所有在 GitHub 上贡献的开发者在 2023 年底前启用双因素认证 ...

  5. daemonset应用创建了,但是没有pod被调度起来

    环境: k8s版本1.25.2  一个master  两个node节点 集群节点全部允许调度(无污点),且资源充足. 操作系统版本: Ubuntu22.01 排查思路: 查看kubelet 日志,和c ...

  6. 兴达易控Modbus转Profinet网关连接三菱A800变频器配置案例

    兴达易控Modbus转Profinet网关连接1200Profinet转modbus接三菱A800变频器 下面介绍A800 变频器通过兴达易控modbus转profinet网关,使1200plc无需编 ...

  7. Stable Diffusion

     Stable Diffusion  ...using diffusers Stable Diffusion is a text-to-image latent diffusion model cre ...

  8. 【Azure Developer】在App Service上放置一个JS页面并引用msal.min.js成功获取AAD用户名示例

    问题描述 在App Service上放置一个JS页面并引用msal.min.js,目的是获取AAD用户名并展示. 问题解答 示例代码 <!DOCTYPE html> <html> ...

  9. C#经典十大排序算法(完结)

    C#冒泡排序算法 简介 冒泡排序算法是一种基础的排序算法,它的实现原理比较简单.核心思想是通过相邻元素的比较和交换来将最大(或最小)的元素逐步"冒泡"到数列的末尾. 详细文章描述 ...

  10. windows开发环境备份,再也不怕重装系统了

    每次重装系统后,都要重新安装软件,配置环境变量,极为繁琐.故作环境环境变量备份,常用软件恢复记录,前提是你的软件要安装在非系统盘,D/E盘等 软件安装在非系统盘 开发软件安装在非系统盘,建好目录.重装 ...