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

输出:






目录
打赏
0
0
0
0
74
分享
相关文章
python5种算法模拟螺旋、分层填充、递归、迭代、分治实现螺旋矩阵ll【力扣题59】
python5种算法模拟螺旋、分层填充、递归、迭代、分治实现螺旋矩阵ll【力扣题59】
讯飞星火、文心一言和通义千问同时编“贪吃蛇”游戏,谁会胜出?
讯飞星火、文心一言和通义千问同时编“贪吃蛇”游戏,谁会胜出?
171 1
讯飞星火、文心一言和通义千问同时编“贪吃蛇”游戏,谁会胜出?
|
11月前
|
Linux 终端命令之文件浏览(3) less
Linux 终端命令之文件浏览(3) less
121 0
Linux 终端命令之文件浏览(3) less
|
11月前
|
Rust 编程小技巧摘选(8)
Rust 编程小技巧摘选(8)
302 0
Rust 编程小技巧摘选(8)
|
11月前
|
力扣 C++|一题多解之动态规划专题(1)
力扣 C++|一题多解之动态规划专题(1)
79 0
力扣 C++|一题多解之动态规划专题(1)
|
11月前
|
Python Numpy入门基础(二)数组操作
Python Numpy入门基础(二)数组操作
110 0
Python Numpy入门基础(二)数组操作
Python 高级编程与实战:深入理解性能优化与调试技巧
本文深入探讨了Python的性能优化与调试技巧,涵盖profiling、caching、Cython等优化工具,以及pdb、logging、assert等调试方法。通过实战项目,如优化斐波那契数列计算和调试Web应用,帮助读者掌握这些技术,提升编程效率。附有进一步学习资源,助力读者深入学习。
[oeasy]python081_ai编程最佳实践_ai辅助编程_提出要求_解决问题
本文介绍了如何利用AI辅助编程解决实际问题,以猫屎咖啡的购买为例,逐步实现将购买斤数换算成人民币金额的功能。文章强调了与AI协作时的三个要点:1) 去除无关信息,聚焦目标;2) 将复杂任务拆解为小步骤,逐步完成;3) 巩固已有成果后再推进。最终代码实现了输入验证、单位转换和价格计算,并保留两位小数。总结指出,在AI时代,人类负责明确目标、拆分任务和确认结果,AI则负责生成代码、解释含义和提供优化建议,编程不会被取代,而是会更广泛地融入各领域。
72 28
Python 高级编程与实战:深入理解数据科学与机器学习
本文深入探讨了Python在数据科学与机器学习中的应用,介绍了pandas、numpy、matplotlib等数据科学工具,以及scikit-learn、tensorflow、keras等机器学习库。通过实战项目,如数据可视化和鸢尾花数据集分类,帮助读者掌握这些技术。最后提供了进一步学习资源,助力提升Python编程技能。
|
1月前
|
[oeasy]python074_ai辅助编程_水果程序_fruits_apple_banana_加法_python之禅
本文回顾了从模块导入变量和函数的方法,并通过一个求和程序实例,讲解了Python中输入处理、类型转换及异常处理的应用。重点分析了“明了胜于晦涩”(Explicit is better than implicit)的Python之禅理念,强调代码应清晰明确。最后总结了加法运算程序的实现过程,并预告后续内容将深入探讨变量类型的隐式与显式问题。附有相关资源链接供进一步学习。
36 4
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等