every blog every motto: You will never know unless you try
0. 前言
生活好难,再坚持坚持!
1. 正文
1.2 题解
class Solution:
def generateMatrix(self, n: int) -> List[List[int]]:
"""
和54题类似,先确定上下左右边界,然后不断填入数据
"""
up_edge = 0 # 上边界
down_edge = n-1 # 下边界
left_edge = 0 # 左边界
right_edge = n-1 # 右边界
matrix = [[0 for _ in range(n)] for _ in range(n)]
count = 1 # 填入的数字
while count <= n*n:
# 上边界,从左到右
for i in range(left_edge,right_edge+1):
matrix[up_edge][i] = count
count+=1 # 填充数字+1
up_edge += 1 # 上边界向下移动
if up_edge > down_edge: break
# 右边界,从上向下移动
for i in range(up_edge,down_edge+1):
matrix[i][right_edge] = count
count+=1
right_edge -= 1 # 右边界减-1
if left_edge > right_edge: break
# 下边界, 从右向左移动
for i in range(right_edge,left_edge-1,-1):
matrix[down_edge][i] = count
count += 1
down_edge -= 1
if up_edge > down_edge: break
# 左边界,从下到上
for i in range(down_edge,up_edge-1 , -1):
matrix[i][left_edge] = count
count += 1
left_edge += 1
if left_edge > right_edge: break
return matrix