#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param n int整型
# @return int整型二维数组
#
class Solution:
def Matrix(self , n: int) -> List[List[int]]:
# write code here
l, r, u, d = 0, n-1, 0, n-1#边界:左,右,上,下
k, step = 1, n*n#计数,总字符数
matrix = [[0]*n for _ in range(n)]#初始矩阵
while k<=step:
for i in range(l,r+1):#沿上边界从左到右
matrix[u][i] = k
k += 1
u += 1#上边界收缩(边界已填充)
for i in range(u,d+1):#沿右边界从上到下
matrix[i][r] = k
k += 1
r -= 1#右边界收缩(边界已填充)
for i in range(r,l-1,-1):#沿下边界从右到左
matrix[d][i] = k
k += 1
d -= 1#下边界收缩(边界已填充)
for i in range(d,u-1,-1):#沿左边界从下到上
matrix[i][l] = k
k += 1
l += 1#左边界收缩(边界已填充)
return matrix#返回填充后的矩阵