题目描述
给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。
示例:
输入: 3
输出:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
解题思路
1、模拟螺旋矩阵
2、螺旋的顺序是从左到右,从上到下,从右到左,从下到上,逐个填充数字。
参考代码
class Solution:
def generateMatrix(self, n: int) -> List[List[int]]:
l = 0
r = n - 1
t = 0
b = n - 1
num = 1
nn = n*n
mat = [[0 for _ in range(n)] for _ in range(n)]
while num <= nn:
for i in range(l,r+1): # 从左向右移动
mat[t][i] = num
num += 1
t += 1
for i in range(t,b+1):# 从上到下
mat[i][r] = num
num += 1
r -= 1
for i in range(r,l-1,-1): # 从右到左
mat[b][i] = num
num += 1
b -= 1
for i in range(b,t-1,-1):# 从下到上
mat[i][l] = num
num += 1
l += 1
return mat