题目描述
给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。
示例:
输入: 3
输出:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
解题思路
- 通过有规律的循环,一层一层地循环, 相当于一个圆圈,往里收缩
- 先定义一个二维数组,初始化
- 然后层层循环
代码
class Solution:
def generateMatrix(self, n: int) -> List[List[int]]:
r = 0
count = 0
arr = [[0 for i in range(n)] for j in range(n)]
while count<n*n:
for i in range(r,n-r):
count += 1
arr[r][i] = count
for i in range(r+1,n-r):
count += 1
arr[i][n-r-1] = count
for i in range(r+1,n-r):
count += 1
arr[n-r-1][n-i-1] = count
for i in range(r+1,n-r-1):
count += 1
arr[n-i-1][r] = count
r += 1
return arr