解题思路:定义一个方向数组,用栈或者直接从左上角的起点进行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. 白话领域驱动设计DDD

    容我找个借口先,日常工作太忙,写作略有荒废.一直想聊下领域驱动设计,以下简称DDD,之前也看过一些教程,公司今年两个项目--银行核心和信用卡核心,都深度运用DDD成功落地,有人说DDD挺难理解,在此讲 ...

  2. Codeforces 1463D Pairs

    题意 对于数字\(1\)~\(2n\),可以构造出\(n\)个二元组,对于\(n\)个二元组,选择一个数组\(x\),留下\(x\)个二元组的最小值,留下\(n-x\)个二元组的最大值,其构成了一个集 ...

  3. CodeForces 1174D Ehab and the Expected XOR Problem

    题意: 给定两个数\(n\)和\(x\),构造一个序列,设为\(a[l]\)(\(l\)不确定) \(1\).\(1\leq a[i]<2^{n}\) \(2\).序列中没有子序列异或和为\(0 ...

  4. springboot集成seata1.5.2+nacos2.1.1

    一.前言 Seata出现前,大部分公司使用的都是TCC或者MQ(RocketMq)等来解决分布式事务的问题,TCC代码编写复杂,每个业务均需要实现三个入口,侵入性强,RocketMQ保证的是最终一致性 ...

  5. 五分钟 k8s入门到实战--跨服务调用

    背景 在做传统业务开发的时候,当我们的服务提供方有多个实例时,往往我们需要将对方的服务列表保存在本地,然后采用一定的算法进行调用:当服务提供方的列表变化时还得及时通知调用方. student: url ...

  6. MASA MAUI iOS 文件下载与断点续传

    @ 目录 背景 介绍 方案及代码 1.新建MAUI项目 2.建立NSUrlSession会话连接 3.使用NSUrlSessionDownloadTask 创建下载任务 4.DidWriteData ...

  7. Oracle字符串函数-Translate()总结

    Oracle的Translate(expr,from_string,to_string)是字符串操作函数,实现from_string,to_string字符的一 一替换 1)典型示例: select ...

  8. .NET周刊【9月第4期 2023-09-24】

    国内文章 有趣的"可扩展近似计数"算法 https://zhuanlan.zhihu.com/p/656817283 在编程的世界里看见数学的身影,会让我充满好奇和兴奋.这不,在一 ...

  9. 一种对数据库友好的GUID的变种使用方法

    概述 .NET生成的GUID唯一性很好,用之方便,但是,缺少像雪花算法那样的有序性.虽然分布式系统中做不到绝对的有序,但是,相对的有序对于目前数据库而言,索引效率等方面的提升还是有明显效果的(当然,我 ...

  10. CF1368B

    题目简化和分析: 因为要求长度最小,所以我们每个字符就应该发挥最大的价值,不会有没有作用的字符. 设有 \(x_1\) 个 \(c\) ,\(x_2\) 个 \(o\) ,\(x_3\) 个 \(d\ ...