我是这么标记的 首先上、下、左、右 各标记一个变量 每循环一圈 左和上加一 而右和下则减一。
注意边界 1 当n 1时 单独判断 2 n为奇数时 最中间的一个数要单独填充。
class Solution: def generateMatrix(self, n: int) - List[List[int]]: res [[0 for _ in range(n)] for _ in range(n)] if n 1: # 1的情况单独判断 res[0][0] 1 return res value 1 # 要填充的值 left, up 0, 0 right, low n-1, n-1 while value n**2: # 只要小于等于n^2 则还没填充完 # 从左向右 for i in range(left, right): res[up][i] value value 1 # 填充完 1 up 1 # 上层填了一行 需要去掉 # 从上到下 for i in range(up-1, low): res[i][right] value value 1 right - 1 # 右边填了一列 需要去掉 # 从右到左 for i in range(right 1, left, -1): res[low][i] value value 1 low - 1 # 下边填了一列 需要去掉 # 从下到上 for i in range(low 1, up-1, -1): res[i][left] value value 1 left 1 # 左边填了一列 需要去掉 if left right or up low: # n为单数的情况 最中间的数需要单独判断 res[left][up] value value 1 return res



