59. 螺旋矩阵 II
给你一个正整数 n 生成一个包含 1 到 n^2 所有元素,且元素按顺时针顺序螺旋排列的n x n正方形矩阵 matrix。
- 设置起始点为
(x, y), 每转一圈就更新起始点。 - 一共要转
loop = n // 2次。 - 采用左闭右开的原则。
n为奇数时,需要加上中间那个数。
class Solution:
def generateMatrix(self, n: int) -> List[List[int]]:
matrix=[[0] * n for _ in range(n)]
count=1
x = y = 0 #作为起始点
loop = n // 2 # 用于记录循环次数,也就是需要转多少圈
for cir in range(loop):
for j in range(y, n - cir - 1):
matrix[x][j] = count
count += 1
for i in range(x, n - cir -1):
matrix[i][n - cir - 1] = count
count += 1
for j in range(n - cir - 1, y, -1):
matrix[n - cir - 1][j] = count
count += 1
for i in range(n - cir - 1, x, -1):
matrix[i][x] = count
count += 1
x += 1
y += 1
#如果n为奇数,需要填中间那个格子
if (n % 2 != 0):
matrix[loop][loop] = count
return matrix
细节:
- 不要忘记
range的那个-1。 for和range的组合不会让遍历元素加一或减一,而while会。
for i in range(0,2):
pass
print(i) #1
i = 0
while i < 2:
i += 1
print(i) #2
这篇博客介绍了一个Python算法,用于生成一个n×n的螺旋矩阵,矩阵中的元素从1开始,按照顺时针方向螺旋排列。算法通过设定起始点并按圈层填充,特别处理了奇数情况下中间元素的填充。代码中使用了for循环和range函数,并强调了它们在迭代过程中的行为与while循环的不同。
9128

被折叠的 条评论
为什么被折叠?



