mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-09 11:34:46 +08:00
Merge pull request #677 from RyouMon/master
优化 0059.螺旋矩阵II.md Python3解法
This commit is contained in:
@ -191,33 +191,48 @@ class Solution {
|
|||||||
|
|
||||||
python:
|
python:
|
||||||
|
|
||||||
```python
|
```python3
|
||||||
class Solution:
|
class Solution:
|
||||||
|
|
||||||
def generateMatrix(self, n: int) -> List[List[int]]:
|
def generateMatrix(self, n: int) -> List[List[int]]:
|
||||||
left, right, up, down = 0, n-1, 0, n-1
|
# 初始化要填充的正方形
|
||||||
matrix = [ [0]*n for _ in range(n)]
|
matrix = [[0] * n for _ in range(n)]
|
||||||
num = 1
|
|
||||||
while left<=right and up<=down:
|
left, right, up, down = 0, n - 1, 0, n - 1
|
||||||
# 填充左到右
|
number = 1 # 要填充的数字
|
||||||
for i in range(left, right+1):
|
|
||||||
matrix[up][i] = num
|
while left < right and up < down:
|
||||||
num += 1
|
|
||||||
up += 1
|
# 从左到右填充上边
|
||||||
# 填充上到下
|
for x in range(left, right):
|
||||||
for i in range(up, down+1):
|
matrix[up][x] = number
|
||||||
matrix[i][right] = num
|
number += 1
|
||||||
num += 1
|
|
||||||
right -= 1
|
# 从上到下填充右边
|
||||||
# 填充右到左
|
for y in range(up, down):
|
||||||
for i in range(right, left-1, -1):
|
matrix[y][right] = number
|
||||||
matrix[down][i] = num
|
number += 1
|
||||||
num += 1
|
|
||||||
down -= 1
|
# 从右到左填充下边
|
||||||
# 填充下到上
|
for x in range(right, left, -1):
|
||||||
for i in range(down, up-1, -1):
|
matrix[down][x] = number
|
||||||
matrix[i][left] = num
|
number += 1
|
||||||
num += 1
|
|
||||||
|
# 从下到上填充左边
|
||||||
|
for y in range(down, up, -1):
|
||||||
|
matrix[y][left] = number
|
||||||
|
number += 1
|
||||||
|
|
||||||
|
# 缩小要填充的范围
|
||||||
left += 1
|
left += 1
|
||||||
|
right -= 1
|
||||||
|
up += 1
|
||||||
|
down -= 1
|
||||||
|
|
||||||
|
# 如果阶数为奇数,额外填充一次中心
|
||||||
|
if n % 2:
|
||||||
|
matrix[n // 2][n // 2] = number
|
||||||
|
|
||||||
return matrix
|
return matrix
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user