给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。
示例 1:
示例 2:
输入:n = 1
输出:[[1]]
参考bilibili写出的代码:
class Solution:
def generateMatrix(self, n: int) -> List[List[int]]:
rowBegin,rowEnd = 0,n-1
colBegin,colEnd = 0,n-1
matrix = [[0 for _ in range(n)] for _ in range(n)]
number = 1
while(rowBegin <= rowEnd and colBegin <= colEnd):
for i in range(colBegin,colEnd+1):
matrix[rowBegin][i] = number
number += 1
rowBegin += 1
for i in range(rowBegin,rowEnd+1):
matrix[i][colEnd] = number
number += 1
colEnd -= 1
if rowBegin <= rowEnd:
for i in range(colEnd,colBegin-1,-1):
matrix[rowEnd][i] = number
number += 1
rowEnd -= 1
if colBegin <= colEnd:
for i in range(rowEnd,rowBegin-1,-1):
matrix[i][colBegin] = number
number += 1
colBegin += 1
return matrix
该算法的难点主要在于上下左右四个方向起始位置的改变与转换,相关索引容易弄错