class Solution(object):
def generateMatrix(self, n):
"""
:type n: int
:rtype: List[List[int]]
"""
top, bottom, right, left = 0, n - 1, n - 1, 0 # 四个边界值
array = [[None for _ in range(n)] for _ in range(n)] # 创建二维空数组
temp = [None] * (n ** 2) # 创建一维数组存储 1-n^2 的值
x, y = None, None # 活动下标
i = 0 # 赋值下标
for transient in range(n ** 2):
temp[transient] = transient + 1
while left < right:
y = left
while y < right: # 上边向右赋值
array[top][y] = temp[i]
y += 1
i += 1
x = top
while x < bottom: # 右边向下赋值
array[x][right] = temp[i]
x += 1
i += 1
y = right
while y > left: # 下边向左赋值
array[bottom][y] = temp[i]
y -= 1
i += 1
x = bottom
while x > top: # 左边向上赋值
array[x][left] = temp[i]
x -= 1
i += 1
bottom -= 1
top += 1
right -= 1
left += 1 # 一次循环操作后边界缩小
if n % 2 != 0: # 奇数对中心值特殊处理,此时top,right,bottom,left值相同
array[top][right] = temp[i]
return array