Python每日一练(20230518) 螺旋矩阵 I\II\III\IV Spiral Matrix

简介: Python每日一练(20230518) 螺旋矩阵 I\II\III\IV Spiral Matrix

1. 螺旋矩阵 I Spiral Matrix i



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

示例 1:

eb3cc42c3393b0f0def1b561b0689f17.jpeg


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

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



示例 2:

c2cd0e0be9c8258e9dd955eefa7dc81b.jpeg

输入: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

代码:

python

输出:





2. 螺旋矩阵 II Spiral Matrix ii


给你一个正整数 n ,生成一个包含 1n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix


示例 1:

47a14df99f712801aa6a17f2bd295479.jpeg


输入:n = 3

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


示例 2:

输入:n = 1

输出:[[1]]


提示:

  • 1 <= n <= 20

代码:

python

输出:




3. 螺旋矩阵 III Spiral Matrix iii


在 R 行 C 列的矩阵上,我们从 (r0, c0) 面朝东面开始

这里,网格的西北角位于第一行第一列,网格的东南角位于最后一行最后一列。


现在,我们以顺时针按螺旋状行走,访问此网格中的每个位置。


每当我们移动到网格的边界之外时,我们会继续在网格之外行走(但稍后可能会返回到网格边界)。


最终,我们到过网格的所有 R * C 个空间。


按照访问顺序返回表示网格位置的坐标列表。


示例 1:

输入:R = 1, C = 4, r0 = 0, c0 = 0

输出:[[0,0],[0,1],[0,2],[0,3]]


69a59ef698afed608cfce95a51971c78.png



示例 2:


输入:R = 5, C = 6, r0 = 1, c0 = 4

输出:[[1,4],[1,5],[2,5],[2,4],[2,3],[1,3],[0,3],[0,4],[0,5],[3,5],[3,4],[3,3],[3,2],[2,2],[1,2],[0,2],[4,5],[4,4],[4,3],[4,2],[4,1],[3,1],[2,1],[1,1],[0,1],[4,0],[3,0],[2,0],[1,0],[0,0]]


8894ca9310d2b065722eecf2cf36d654.png



提示:

  1. 1 <= R <= 100
  2. 1 <= C <= 100
  3. 0 <= r0 < R
  4. 0 <= c0 < C

代码:

python

输出:



4. 螺旋矩阵 IV Spiral Matrix iv


给你两个整数:mn ,表示矩阵的维数。


另给你一个整数链表的头节点 head 。


请你生成一个大小为 m x n 的螺旋矩阵,矩阵包含链表中的所有整数。链表中的整数从矩阵 左上角 开始、顺时针 按 螺旋 顺序填充。如果还存在剩余的空格,则用 -1 填充。


返回生成的矩阵。


示例 1:

1f35a6f2d840038ed7e3f15e94e4586d.jpeg

输入:m = 3, n = 5, head = [3,0,2,6,8,1,7,9,4,2,5,5,0]

输出:[[3,0,2,6,8],[5,0,-1,-1,1],[5,2,4,9,7]]

解释:上图展示了链表中的整数在矩阵中是如何排布的。

注意,矩阵中剩下的空格用 -1 填充。


示例 2:

384daca355e19ae96e74790daa717e92.jpeg

输入:m = 1, n = 4, head = [0,1,2]

输出:[[0,1,2,-1]]

解释:上图展示了链表中的整数在矩阵中是如何从左到右排布的。  

注意,矩阵中剩下的空格用 -1 填充。


提示:

   1 <= m, n <= 10^5

   1 <= m * n <= 10^5

   链表中节点数目在范围 [1, m * n] 内

   0 <= Node.val <= 1000


代码:

python

输出:






目录
相关文章
|
1月前
|
存储 算法 数据挖掘
python5种算法模拟螺旋、分层填充、递归、迭代、分治实现螺旋矩阵ll【力扣题59】
python5种算法模拟螺旋、分层填充、递归、迭代、分治实现螺旋矩阵ll【力扣题59】
|
2月前
|
Python 人工智能
讯飞星火、文心一言和通义千问同时编“贪吃蛇”游戏,谁会胜出?
讯飞星火、文心一言和通义千问同时编“贪吃蛇”游戏,谁会胜出?
64 1
讯飞星火、文心一言和通义千问同时编“贪吃蛇”游戏,谁会胜出?
|
2月前
|
Shell Unix Linux
Linux 终端命令之文件浏览(3) less
Linux 终端命令之文件浏览(3) less
45 0
Linux 终端命令之文件浏览(3) less
|
2月前
|
Rust
Rust 编程小技巧摘选(8)
Rust 编程小技巧摘选(8)
138 0
Rust 编程小技巧摘选(8)
|
2月前
|
算法 C++ 机器人
力扣 C++|一题多解之动态规划专题(1)
力扣 C++|一题多解之动态规划专题(1)
49 0
力扣 C++|一题多解之动态规划专题(1)
|
2月前
|
C++ Python 索引
Python Numpy入门基础(二)数组操作
Python Numpy入门基础(二)数组操作
37 0
Python Numpy入门基础(二)数组操作
|
6天前
|
安全 Python
告别低效编程!Python线程与进程并发技术详解,让你的代码飞起来!
【7月更文挑战第9天】Python并发编程提升效率:**理解并发与并行,线程借助`threading`模块处理IO密集型任务,受限于GIL;进程用`multiprocessing`实现并行,绕过GIL限制。示例展示线程和进程创建及同步。选择合适模型,注意线程安全,利用多核,优化性能,实现高效并发编程。
20 3
|
8天前
|
开发者 Python
Python元类实战:打造你的专属编程魔法,让代码随心所欲变化
【7月更文挑战第7天】Python的元类是编程的变形师,用于创建类的“类”,赋予代码在构建时的变形能力。
30 1
|
9天前
|
设计模式 存储 Python
Python元类大揭秘:从理解到应用,一步步构建你的编程帝国
【7月更文挑战第6天】Python元类是创建类的对象的基石,允许控制类的生成过程。通过自定义元类,可在类定义时动态添加方法或改变行为。
16 0
|
6天前
|
数据采集 大数据 数据安全/隐私保护
Python编程:如何有效等待套接字的读取与关闭
Python网络编程中,套接字事件处理至关重要。利用`selectors`模块和代理IP能增强程序的稳定性和可靠性。代码示例展示了如何通过代理连接目标服务器,注册套接字的读写事件并高效处理。在代理IP配置、连接创建、事件循环及回调函数中,实现了数据收发与连接管理,有效应对网络爬虫或聊天应用的需求,同时保护了真实IP。
Python编程:如何有效等待套接字的读取与关闭