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

输出:






目录
相关文章
|
6月前
|
存储 算法 数据挖掘
python5种算法模拟螺旋、分层填充、递归、迭代、分治实现螺旋矩阵ll【力扣题59】
python5种算法模拟螺旋、分层填充、递归、迭代、分治实现螺旋矩阵ll【力扣题59】
|
7月前
|
Python 人工智能
讯飞星火、文心一言和通义千问同时编“贪吃蛇”游戏,谁会胜出?
讯飞星火、文心一言和通义千问同时编“贪吃蛇”游戏,谁会胜出?
112 1
讯飞星火、文心一言和通义千问同时编“贪吃蛇”游戏,谁会胜出?
|
7月前
|
Shell Unix Linux
Linux 终端命令之文件浏览(3) less
Linux 终端命令之文件浏览(3) less
74 0
Linux 终端命令之文件浏览(3) less
|
7月前
|
Rust
Rust 编程小技巧摘选(8)
Rust 编程小技巧摘选(8)
208 0
Rust 编程小技巧摘选(8)
|
7月前
|
算法 C++ 机器人
力扣 C++|一题多解之动态规划专题(1)
力扣 C++|一题多解之动态规划专题(1)
65 0
力扣 C++|一题多解之动态规划专题(1)
|
7月前
|
C++ Python 索引
Python Numpy入门基础(二)数组操作
Python Numpy入门基础(二)数组操作
59 0
Python Numpy入门基础(二)数组操作
|
17天前
|
存储 数据挖掘 开发者
Python编程入门:从零到英雄
在这篇文章中,我们将一起踏上Python编程的奇幻之旅。无论你是编程新手,还是希望拓展技能的开发者,本教程都将为你提供一条清晰的道路,引导你从基础语法走向实际应用。通过精心设计的代码示例和练习,你将学会如何用Python解决实际问题,并准备好迎接更复杂的编程挑战。让我们一起探索这个强大的语言,开启你的编程生涯吧!
|
23天前
|
机器学习/深度学习 人工智能 TensorFlow
人工智能浪潮下的自我修养:从Python编程入门到深度学习实践
【10月更文挑战第39天】本文旨在为初学者提供一条清晰的道路,从Python基础语法的掌握到深度学习领域的探索。我们将通过简明扼要的语言和实际代码示例,引导读者逐步构建起对人工智能技术的理解和应用能力。文章不仅涵盖Python编程的基础,还将深入探讨深度学习的核心概念、工具和实战技巧,帮助读者在AI的浪潮中找到自己的位置。
|
23天前
|
机器学习/深度学习 数据挖掘 Python
Python编程入门——从零开始构建你的第一个程序
【10月更文挑战第39天】本文将带你走进Python的世界,通过简单易懂的语言和实际的代码示例,让你快速掌握Python的基础语法。无论你是编程新手还是想学习新语言的老手,这篇文章都能为你提供有价值的信息。我们将从变量、数据类型、控制结构等基本概念入手,逐步过渡到函数、模块等高级特性,最后通过一个综合示例来巩固所学知识。让我们一起开启Python编程之旅吧!
|
23天前
|
存储 Python
Python编程入门:打造你的第一个程序
【10月更文挑战第39天】在数字时代的浪潮中,掌握编程技能如同掌握了一门新时代的语言。本文将引导你步入Python编程的奇妙世界,从零基础出发,一步步构建你的第一个程序。我们将探索编程的基本概念,通过简单示例理解变量、数据类型和控制结构,最终实现一个简单的猜数字游戏。这不仅是一段代码的旅程,更是逻辑思维和问题解决能力的锻炼之旅。准备好了吗?让我们开始吧!