标签:取值 上下左右 数字 matrix 生成 排列 int ret start
给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。
本题思路:先生成一个 n^2的矩阵,定义上下左右四个边界变量
1.本题最精妙的地方就是 边界的迭代刚好与矩阵中数字填入顺序相同
for i in range(l,r+1):
for i in range(t,b+1):
for i in range(r,l-1,-1):
for i in range(b,t-1,-1):
2.第二个学到的点就是 range(start,end,step)的用法,在start > end 时,即倒叙打印时,step 应该设为-1
假设 n =4 ,那么每次取值的数为: 4 3 3 2 2 1 1
class Solution:
def generateMatrix(self, n: int) -> List[List[int]]:
maxtrix = [[0 for _ in range(n)] for _ in range(n)]
l ,r ,t, b = 0 , n-1 , 0 , n-1
num,tar = 1,n ** 2
while num <= tar:
print(‘1‘,(l,r,t,b))
for i in range(l,r+1):
maxtrix[t][i] = num
num +=1
t +=1
print(‘2‘,(l,r,t,b))
for i in range(t,b+1):
maxtrix[i][b] = num
num += 1
r -= 1
print(‘3‘,(l,r,t,b))
for i in range(r,l-1,-1):
maxtrix[b][i] = num
num+=1
b -=1
print(‘4‘,(l,r,t,b))
for i in range(b,t-1,-1):
maxtrix[i][l] = num
num+=1
l +=1
print(‘5‘,(l,r,t,b))
return maxtrix
59. 螺旋矩阵 II
标签:取值 上下左右 数字 matrix 生成 排列 int ret start
原文地址:https://www.cnblogs.com/ChevisZhang/p/12238647.html