Merge pull request #1112 from K-945/master

添加0059.螺旋矩阵II.md 和解析相同的python版
This commit is contained in:
程序员Carl
2022-03-14 10:14:46 +08:00
committed by GitHub

View File

@ -192,47 +192,31 @@ python3:
```python ```python
class Solution: class Solution:
def generateMatrix(self, n: int) -> List[List[int]]: def generateMatrix(self, n: int) -> List[List[int]]:
# 初始化要填充的正方形 nums = [[0] * n for _ in range(n)]
matrix = [[0] * n for _ in range(n)] startx, starty = 0, 0 # 起始点
loop, mid = n // 2, n // 2 # 迭代次数、n为奇数时矩阵的中心点
count = 1 # 计数
left, right, up, down = 0, n - 1, 0, n - 1 for offset in range(1, loop + 1) : # 每循环一层偏移量加1偏移量从1开始
number = 1 # 要填充的数字 for i in range(starty, n - offset) : # 从左至右,左闭右开
nums[startx][i] = count
count += 1
for i in range(startx, n - offset) : # 从上至下
nums[i][n - offset] = count
count += 1
for i in range(n - offset, starty, -1) : # 从右至左
nums[n - offset][i] = count
count += 1
for i in range(n - offset, startx, -1) : # 从下至上
nums[i][starty] = count
count += 1
startx += 1 # 更新起始点
starty += 1
while left < right and up < down: if n % 2 != 0 : # n为奇数时填充中心点
nums[mid][mid] = count
# 从左到右填充上边 return nums
for x in range(left, right):
matrix[up][x] = number
number += 1
# 从上到下填充右边
for y in range(up, down):
matrix[y][right] = number
number += 1
# 从右到左填充下边
for x in range(right, left, -1):
matrix[down][x] = number
number += 1
# 从下到上填充左边
for y in range(down, up, -1):
matrix[y][left] = number
number += 1
# 缩小要填充的范围
left += 1
right -= 1
up += 1
down -= 1
# 如果阶数为奇数,额外填充一次中心
if n % 2:
matrix[n // 2][n // 2] = number
return matrix
``` ```
javaScript javaScript