更多精彩內(nèi)容,請(qǐng)關(guān)注【力扣中等題】。
題目
難度:★★★☆☆
類型:數(shù)組
方法:排序
給定一個(gè)正整數(shù) n,生成一個(gè)包含 1 到 n2 所有元素,且元素按順時(shí)針順序螺旋排列的正方形矩陣。
示例
輸入: 3
輸出:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
解答
這道題目與【題目56. 螺旋矩陣】類似,這里我們首先建立一個(gè)全為零的空?qǐng)D,然后從外向內(nèi)填充連續(xù)數(shù)字,注意轉(zhuǎn)折點(diǎn)的判斷過程:遇到邊界或者非零數(shù)。
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
如有疑問或建議,歡迎評(píng)論區(qū)留言~