题目:
给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。
示例 1:
输入:n = 3
输出:[[1,2,3],[8,9,4],[7,6,5]]
示例 2:
输入:n = 1
输出:[[1]]
代码:
class Solution:
def generateMatrix(self, n: int) -> List[List[int]]:
res=[[0 for a in range(n)]for b in range(n)]
y,x=0,0
up,down,left,right=0,n-1,0,n-1
if n==0:
return []
count=0
move=[[0,+1],[+1,0],[0,-1],[-1,0]]#按照右下左上的顺序进行。
move_mark=0
while count<n**2:
res[y][x]=count+1
count+=1
if move_mark==0 and x==right:#如果当前是向右移动并且到达有边界,
up+=1
move_mark+=1
elif move_mark==1 and y==down:#如果当前是向下移动,并且到达下边界。
right-=1
move_mark+=1
elif move_mark==2 and x==left:#如果当前是向左移动,并且到达左边界。
down-=1
move_mark+=1
elif move_mark==3 and y==up:#如果当前是向上移动,并且到达上边界。
left+=1
move_mark+=1
move_mark%=4
y+=move[move_mark][0]
x+=move[move_mark][1]
return res