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]]
思路:
本题与0054.螺旋矩阵思想类似,主要是需要注意矩阵遍历时的边界,具体解题思想和步骤可以参考0054.螺旋矩阵。
代码如下:
class Solution:
def generateMatrix(self, n: int) -> List[List[int]]:
top, bottom, left, right = 0, n-1, 0, n-1
# 创建一个n*n的矩阵
matrix = [[0 for i in range(n)] for i in range(n)]
num = 1
while num <= n*n:
for i in range(left, right+1): # 顺时针向右遍历
matrix[top][i] = num
num += 1
top += 1
if top > bottom:
break
for j in range(top, bottom+1): # 顺时针向下遍历
matrix[j][right] = num
num += 1
right -= 1
if right < left:
break
for k in range(right, left-1, -1): # 顺时针向左遍历
matrix[bottom][k] = num
num += 1
bottom -= 1
if bottom < top:
break
for l in range(bottom, top-1, -1): # 顺时针向上遍历
matrix[l][left] = num
num += 1
left += 1
if left > right:
break
return matrix