59. 螺旋矩阵 II
给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。
示例:
输入:
3
输出:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
解答:
def generateMatrix(self, n, m = None ): # m行 n列
#当然可以处理n=m的正方形矩阵的特殊情况了
m = n if m is None else m
res = [[0]*n for i in range(m)]
value = 1
startX = 0
startY = 0
endX = n-1 #下标
endY = m-1 #下标
while startX<=endX and startY<=endY :
#如果只有一列
if startX==endX :
for i in range(startY,endY+1):
res[i][endX] = value
value+=1
return res
#如果只有一行
if startY==endY :
for i in range(startX,endX+1):
res[endY][i] = value
value+=1
return res
#遍历StartX->endX
for i in range(startX,endX):
res[startY][i] = value
value += 1
#遍历startY->endY
for i in range(startY,endY):
res[i][endX] = value
value += 1
#遍历endX->startX
for i in range(startX+1,endX+1)[::-1]:
res[endY][i]=value
value+=1
#遍历endY->startY
for i in range(startY+1,endY+1)[::-1]:
res[i][startX]=value
value+=1
startX+=1
startY+=1
endX-=1
endY-=1
return res