螺旋矩阵 II
题目描述:
给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。
示例
输入: 3
输出:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
解题思路:
这一题整体思路和spiral matrix相似
- 我们需要沿着
右→下→左→上
的顺序不断移动,注意当中参数的使用和范围 - 特别地,每一个方向运行到结束时,都需要判断是否还有移动的空间,如果没有,说明所有数字都已经被填入,立即结束循环
Python源码:
from typing import List
class Solution:
def generateMatrix(self, n: int) -> List[List[int]]:
matrix = [[0 for j in range(n)] for i in range(n)]
top = 0
bottom = n - 1
left = 0
right = n - 1
count = 1
while True:
for i in range(left, right + 1):
matrix[top][i] = count
count += 1
top += 1
if left > right or top > bottom:
break
for i in range(top, bottom + 1):
matrix[i][right] = count
count += 1
right -= 1
if left > right or top > bottom:
break
for j in range(left, right + 1)[::-1]:
matrix[bottom][j] = count
count += 1
bottom -= 1
if left > right or top > bottom:
break
for i in range(top, bottom + 1)[::-1]:
matrix[i][left] = count
count += 1
left += 1
if left > right or top > bottom:
break
return matrix
欢迎关注我的github:https://github.com/UESTCYangHR