Skip to content

Commit 4d7cd29

Browse files
Merge pull request youngyangyang04#677 from RyouMon/master
优化 0059.螺旋矩阵II.md Python3解法
2 parents e948991 + 65edb41 commit 4d7cd29

File tree

1 file changed

+38
-23
lines changed

1 file changed

+38
-23
lines changed

problems/0059.螺旋矩阵II.md

Lines changed: 38 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -191,33 +191,48 @@ class Solution {
191191

192192
python:
193193

194-
```python
194+
```python3
195195
class Solution:
196+
196197
def generateMatrix(self, n: int) -> List[List[int]]:
197-
left, right, up, down = 0, n-1, 0, n-1
198-
matrix = [ [0]*n for _ in range(n)]
199-
num = 1
200-
while left<=right and up<=down:
201-
# 填充左到右
202-
for i in range(left, right+1):
203-
matrix[up][i] = num
204-
num += 1
205-
up += 1
206-
# 填充上到下
207-
for i in range(up, down+1):
208-
matrix[i][right] = num
209-
num += 1
198+
# 初始化要填充的正方形
199+
matrix = [[0] * n for _ in range(n)]
200+
201+
left, right, up, down = 0, n - 1, 0, n - 1
202+
number = 1 # 要填充的数字
203+
204+
while left < right and up < down:
205+
206+
# 从左到右填充上边
207+
for x in range(left, right):
208+
matrix[up][x] = number
209+
number += 1
210+
211+
# 从上到下填充右边
212+
for y in range(up, down):
213+
matrix[y][right] = number
214+
number += 1
215+
216+
# 从右到左填充下边
217+
for x in range(right, left, -1):
218+
matrix[down][x] = number
219+
number += 1
220+
221+
# 从下到上填充左边
222+
for y in range(down, up, -1):
223+
matrix[y][left] = number
224+
number += 1
225+
226+
# 缩小要填充的范围
227+
left += 1
210228
right -= 1
211-
# 填充右到左
212-
for i in range(right, left-1, -1):
213-
matrix[down][i] = num
214-
num += 1
229+
up += 1
215230
down -= 1
216-
# 填充下到上
217-
for i in range(down, up-1, -1):
218-
matrix[i][left] = num
219-
num += 1
220-
left += 1
231+
232+
# 如果阶数为奇数,额外填充一次中心
233+
if n % 2:
234+
matrix[n // 2][n // 2] = number
235+
221236
return matrix
222237
```
223238

0 commit comments

Comments
 (0)