题目地址(59. 螺旋矩阵 II)
题目描述
给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。
示例 1:
输入:n = 3
输出:[[1,2,3],[8,9,4],[7,6,5]]
示例 2:
输入:n = 1
输出:[[1]]
提示:
1 <= n <= 20
前置知识
公司
- 暂无
思路
关键点
代码
- 语言支持:Python3
Python3 Code:
class Solution:
def generateMatrix(self, n: int) -> List[List[int]]:
# 解题思路:
# 可以从外围向内围逐层填充,每轮填充四次
# 填充使用左闭右开的方式
# 初始化一个矩阵
matrix = [[0]*n for _ in range(n) ]
# 初始化四个维度
left,up,right,down = 0,0,n-1,n-1
# 初始化num
num = 1
while left < right and up < down:
# 从左往右填充
for x in range(left,right):
matrix[up][x] = num
num += 1
# 从上往下填充
for y in range(up,down):
matrix[y][right] = num
num += 1
# 从右往左填充
for x in range(right,left,-1):
matrix[down][x] = num
num += 1
# 从下往上填充
for y in range(down,up,-1):
matrix[y][left] = num
num += 1
left,right,up,down = left+1,right-1,up+1,down-1
if n % 2 != 0:
matrix[n//2][n//2] = num
return matrix
复杂度分析
令 n 为数组长度。
- 时间复杂度: O ( n ) O(n) O(n)
- 空间复杂度: O ( n ) O(n) O(n)