输入一个n 输出n行n列的螺旋矩阵
时间: 2023-10-01 18:03:40 浏览: 115
可以按照如下步骤生成螺旋矩阵:
1. 初始化一个 n x n 的矩阵,用 0 填充。
2. 定义四个方向变量 dx, dy 表示每次遍历的方向,初始值为 (0, 1) 表示向右遍历。
3. 定义两个边界变量 left, right, top, bottom 表示当前遍历的边界。
4. 从左上角开始遍历,按照 dx, dy 方向遍历矩阵,每遍历到一个格子就将其赋值为当前的数字,并将数字加1。
5. 如果遍历到了边界,则更新边界并改变遍历方向。
6. 直到遍历完所有的格子为止。
下面是代码实现:
```python
def generateMatrix(n: int) -> List[List[int]]:
matrix = [[0] * n for _ in range(n)] # 初始化矩阵
dx, dy = 0, 1 # 初始遍历方向为向右
left, right, top, bottom = 0, n-1, 0, n-1 # 初始边界
num = 1 # 初始数字
while left <= right and top <= bottom:
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
for i in range(right, left-1, -1): # 向左遍历
matrix[bottom][i] = num
num += 1
bottom -= 1
for i in range(bottom, top-1, -1): # 向上遍历
matrix[i][left] = num
num += 1
left += 1
return matrix
```
例如,输入 n = 3,输出如下螺旋矩阵:
```
1 2 3
8 9 4
7 6 5
```
阅读全文