解题思路
每一次填充都由三个参数所决定,比如第一行的填充,就是由l,r和t决定,l和r决定填充的方向,t决定在上方进行填充。
python 代码
class Solution:
def generateMatrix(self, n: int) -> List[List[int]]:
matrix = []
for i in range(n):
matrix.append([0]*n)
l,r,t,b = 0,n-1,0,n-1
num = 0
sss = n*n
while num < sss:
# 从左到右
for i in range(l,r+1):
num += 1
matrix[t][i] = num
t += 1
# 从上到下
for i in range(t,b+1):
num += 1
matrix[i][r] = num
r -= 1
# 从右到左
for i in range(r,l-1,-1):
num += 1
matrix[b][i] = num
b -= 1
# 从下到上
for i in range(b,t-1,-1):
num += 1
matrix[i][l] = num
l += 1
return matrix
s = Solution()
result = s.generateMatrix(3)
print(result)