mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 00:43:04 +08:00
Merge pull request #1112 from K-945/master
添加0059.螺旋矩阵II.md 和解析相同的python版
This commit is contained in:
@ -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
|
||||||
|
Reference in New Issue
Block a user