力扣59. 螺旋矩阵 II

First Post:

Last Update:

59. 螺旋矩阵 II

题目要求

给你一个正整数 n ,生成一个包含 1n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix

示例 1:

img

1
2
输入:n = 3
输出:[[1,2,3],[8,9,4],[7,6,5]]

示例 2:

1
2
输入:n = 1
输出:[[1]]

提示:

  • 1 <= n <= 20

解题思路

借鉴了编程文青李狗蛋的题解思路

这是文章入口:ACM 选手图解 LeetCode 螺旋矩阵Ⅱ | 编程文青李狗蛋

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
res = [[0 for _ in range(n)] for _ in range(n)]
left,right,up,down=0,n-1,0,n-1
cnt=1
while cnt <=n**2:
#从左到右
for i in range(left,right+1):
res[up][i]=cnt
cnt+=1
up+=1
#从上到下
for i in range(up,down+1):
res[i][right]=cnt
cnt+=1
right-=1
#从右到左
for i in range(right,left-1,-1):
res[down][i]=cnt
cnt+=1
down-=1
#从下到上
for i in range(down,up-1,-1):
res[i][left]=cnt
cnt+=1
left+=1
return res