给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。
输入: 3
输出:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
思路:该题主要的点在于,设置边界条件。将5个边界条件考虑到位即可求解。
前四个边界条件主要为:
左边界<x<右边界,上边界<y<下边界
两个条件的结合
最后一个边界条件为:
当上边界下边界 || 左边界右边界
from typing import List
class Solution:
def generateMatrix(self, n: int) -> List[List[int]]:
t,l = 0,0
r,b = n,n
x,y = 0,0
res = [[0]*n for i in range(n)]
count = 1
lastNum = n**2
while count<=lastNum:
if x==t and y<r-1:
res[x][y] = count
count+=1
y+=1
if y==r-1:
t+=1
elif y==r-1 and x<b-1:
res[x][y] = count
count+=1
x+=1
if x==b-1:
r-=1
elif x==b-1 and l<y<=r:
res[x][y] = count
count+=1
y-=1
if y==l:
b-=1
elif y==l and t<x<=b:
res[x][y] = count
count+=1
x-=1
if x==t:
l+=1
else:
res[x][y] = count
count+=1
return res
if __name__ == '__main__':
n = 1
res = Solution().generateMatrix(n)
print(res)