当前位置:实例文章 » 其他实例» [文章]【代码随想录 | Leetcode | 第四天】数组 | 螺旋矩阵 | 59

【代码随想录 | Leetcode | 第四天】数组 | 螺旋矩阵 | 59

发布人:shili8 发布时间:2024-12-24 01:58 阅读次数:0

**螺旋矩阵**

在本文中,我们将讨论一个经典的算法题目——螺旋矩阵。这个问题涉及到生成一个螺旋式排列的矩阵。

**问题描述**

给定一个正整数 `n`,请生成一个大小为 `n x n` 的螺旋矩阵。矩阵中的元素从1 到 `n * n` 按照螺旋式排列。

**示例**

对于 `n =3`,输出应该是:

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


对于 `n =4`,输出应该是:

[
 [1,2,3,4],
 [12,13,14,5],
 [11,16,15,6],
 [10,9,8,7]
]


**解决方案**

我们可以使用一个简单的迭代法来生成螺旋矩阵。具体来说,我们需要维护四个变量:`top`、`bottom`、`left` 和 `right`,分别表示当前矩阵的上边界、下边界、左边界和右边界。

def generateMatrix(n):
 matrix = [[0] * n for _ in range(n)]
 top, bottom, left, right =0, n -1,0, n -1 num =1 while num <= n * n:
 # 从左到右填充第一行 for i in range(left, right +1):
 matrix[top][i] = num num +=1 top +=1 # 从上到下填充最后一列 for i in range(top, bottom +1):
 matrix[i][right] = num num +=1 right -=1 # 从右到左填充最后一行 if top <= bottom:
 for i in range(right, left -1, -1):
 matrix[bottom][i] = num num +=1 bottom -=1 # 从下到上填充第一列 if left <= right:
 for i in range(bottom, top -1, -1):
 matrix[i][left] = num num +=1 left +=1 return matrix# 测试用例n =3print(generateMatrix(n))


**注释**

* 我们首先初始化一个大小为 `n x n` 的矩阵,所有元素都设为0。
* 然后,我们维护四个变量:`top`、`bottom`、`left` 和 `right`,分别表示当前矩阵的上边界、下边界、左边界和右边界。
* 我们使用一个循环来填充矩阵。每次迭代,我们从左到右填充第一行,从上到下填充最后一列,从右到左填充最后一行,从下到上填充第一列。
* 在每个循环中,我们更新 `top`、`bottom`、`left` 和 `right` 的值,以便在下一次迭代时可以正确地填充矩阵。

**总结**

螺旋矩阵是一个经典的算法题目,涉及到生成一个螺旋式排列的矩阵。我们使用一个简单的迭代法来解决这个问题,维护四个变量:`top`、`bottom`、`left` 和 `right`,分别表示当前矩阵的上边界、下边界、左边界和右边界。

其他信息

其他资源

Top