59.螺旋矩阵II
题目:
给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。
解题关键:搞清楚矩阵的构建顺序
模拟顺时针画矩阵的过程:从左到右->从上到下->从右到左->从下到上
代码实现:
class Solution:
def generateMatrix(self, n: int) -> List[List[int]]:
matrix = [ [0]*n for _ in range(n)]
startx, starty = 0, 0
sloop, center = n//2, n//2
counter = 1
for offset in range(1, sloop+1):
for y in range(starty, n-offset):
matrix[startx][y] = counter
counter += 1
for x in range(startx, n-offset):
matrix[x][n-offset] = counter
counter += 1
for y in range(n-offset, starty, -1):
matrix[n-offset][y] = counter
counter += 1
for x in range(n-offset, startx, -1):
matrix[x][starty] = counter
counter += 1
startx += 1
starty += 1
if n%2 != 0:
matrix[center][center] = n**2
return matrix