1. 题目
给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。
示例 1:
输入:n = 3
输出:[[1,2,3],[8,9,4],[7,6,5]]
示例 2:
输入:n = 1
输出:[[1]]
2. 解题思路
与官方的答案不太一样,我还是用的昨天的递归的思路,就是一圈一圈地考虑这个矩阵地元素,一直向内递归,用递归非常需要注意的就是递归的终止条件
from typing import List
class Solution:
def generateMatrix(self, n: int) -> List[List[int]]:
self.array = [[None for _ in range(n)] for _ in range(n)]
a_list = [i for i in range(1, n*n+1)]
self.fun(n, a_list)
return(self.array)
def fun(self, n, a_list):
start = 0
while self.array[start][start] != None:
start += 1
i = 0 + start
# 上边界
count = 0
for j in range(0 + start, n - start):
self.array[i][j] = a_list[count]
count += 1
j = n - 1 - start
# 右边界
for i in range(1 + start, n - start):
self.array[i][j] = a_list[count]
count += 1
i = n - 1 - start
# 下边界
for j in range(n - 2 - start, -1 + start, -1):
self.array[i][j] = a_list[count]
count += 1
j = 0 + start
# 左边界
for i in range(n - 2 - start, 0 + start, -1):
self.array[i][j] = a_list[count]
count += 1
# 停止条件
if len(a_list) == 1 or len(a_list) == 4:
return self.array
else:
return self.fun(n, a_list[count:])
sol = Solution()
n = 5
print(sol.generateMatrix(5))