更多精彩内容,请关注【力扣中等题】。
题目
难度:★★★☆☆
类型:数组
方法:排序
给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。
示例
输入: 3
输出:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
解答
这道题目与【题目56. 螺旋矩阵】类似,这里我们首先建立一个全为零的空图,然后从外向内填充连续数字,注意转折点的判断过程:遇到边界或者非零数。
class Solution:
def generateMatrix(self, n):
"""
:param n: int
:return: List[List[int]]
"""
matrix = [[0]*n for _ in range(n)]
i, j, di, dj = 0, 0, 0, 1
for k in range(1, n**2+1):
matrix[i][j] = k
if matrix[(i+di) % n][(j+dj) % n] != 0:
di, dj = dj, -di
i += di
j += dj
return matrix
如有疑问或建议,欢迎评论区留言~