给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。
示例:
输入: 3
输出:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
- show the code:
class Solution:
def generateMatrix(self, n: int) -> List[List[int]]:
up_r,bottom_r,left_c,right_c,num,res = 0,n-1,0,n-1,1,[[0]*n for _ in range(n)]
while up_r <= bottom_r and left_c <= right_c:
#从左到右
for i in range(left_c,right_c+1):
res[up_r][i] = num
num += 1
up_r += 1
#从上到下
for i in range(up_r,bottom_r+1):
res[i][right_c] = num
num += 1
right_c -= 1
#从右到左
for i in range(right_c,left_c-1,-1):
res[bottom_r][i] = num
num += 1
bottom_r -= 1
#从下到上
for i in range(bottom_r,up_r-1,-1):
res[i][left_c] = num
num += 1
left_c += 1
return res
- 此题是上一题螺旋矩阵(medium)的进阶版,其实两个题都可以用相似的方法来做,这里我用的方法是最简单粗暴的方法,直接按照顺时针螺旋遍历即可。
网友评论