使用列表递推实现螺旋矩阵
时间: 2023-05-30 07:02:40 浏览: 101
以下是Python代码实现:
```python
def generateMatrix(n: int) -> List[List[int]]:
matrix = [[0] * n for _ in range(n)] # 初始化矩阵
top, bottom, left, right = 0, n - 1, 0, n - 1
num = 1 # 从1开始填充矩阵
while top <= bottom and left <= right:
# 填充上行
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 x n 的矩阵,然后按照从外到内的顺序填充矩阵。
我们使用 top,bottom,left,right 四个变量来表示当前填充的边界,num 表示当前要填充的数字。我们从顶部的左列开始填充,然后顺时针方向填充右行、下列、左行,直到填充完整个矩阵。在每个方向上填充完后,我们需要更新对应的边界,避免重复填充。
阅读全文