本文已参与「新人创作礼」活动,一起开启掘金创作之路。
59.螺旋矩阵2
- 题号:54
- 知识点:矩阵
- 总结
题干:
思路:
- 1.根据题目信息可推测,最后得出的一定是一个方阵,大小为
n*n - 2.首先确定方阵的左右上下边界(对应变量
l r u d) - 3.将矩阵构造分解为两条主线,一是矩阵中元素的值按照螺旋顺序递增,
num += 1,二是按照题干图示右移,下移,左移,上移访问矩阵(list)中的每一个元素,注意不要访问越界 - 4.矩阵外层完成遍历之后,再访问并修改内层元素,改变
l r u d四个边界值 - 5.结束条件:当左右边界或上下边界发生交错时遍历完成
# python 实现
class Solution:
def generateMatrix(self, n: int) -> List[List[int]]:
list_ret = [[j for j in range(n)] for i in range(n)]
l = 0
r = n
u = 0
d = n
num = 1
while(1):
for i in range(l, r):
list_ret[u][i] = num
num += 1
for i in range(u+1, d):
list_ret[i][r-1] = num
num += 1
for i in range(r-2, l, -1):
list_ret[d-1][i] = num
num += 1
for i in range(d-1, u, -1):
list_ret[i][l] = num
num += 1
l += 1
r -= 1
u += 1
d -= 1
if l>r:
break
if u>d:
break
return list_ret
参考:
- 1.力扣54题:螺旋矩阵 此题与54题比较相似,都是螺旋矩阵,可以看作是54题的逆操作;